R_Language 板


LINE

※ 引述《corel (可罗)》之铭言: : : ctrl + y 可以删除一整行,请将不需要的内容删除 : 文章分类提示: : - 问题: 当你想要问问题时,请使用这个类别 : : [问题类型]: : : 程式谘询(我想用R 做某件事情,但是我不知道要怎麽用R 写出来) : : [软体熟悉度]: : 请把以下不需要的部份删除 : 入门(写过其他程式,只是对语法不熟悉) : [问题叙述]: : 想撷取 http://www.cwb.gov.tw/V7/climate/monthlyData/mD.htm : 天气资料,但由於天气的资料会依网页上所选取的下拉式选单的值而有所变化 : 想请问各位先进,要如何让R自动会带值选取对应的资料? : 例如: 2013年3月阿里山的平均温度为9.9度 : 2013年4月阿里山的平均温度为11.3度 : 谢谢 : [环境叙述]: : : 请提供 sessionInfo() 的输出结果, : 里面含有所有你使用的作业系统、R 的版本和套件版本资讯, : 让版友更容易找出错误 : : R version 3.2.4 Revised (2016-03-16 r70336) : Platform: x86_64-w64-mingw32/x64 (64-bit) : Running under: Windows 7 x64 (build 7601) Service Pack 1 : locale: : [1] LC_COLLATE=Chinese (Traditional)_Taiwan.950 LC_CTYPE=Chinese : (Traditional)_Taiwan.950 LC_MONETARY=Chinese (Traditional)_Taiwan.950 : [4] LC_NUMERIC=C LC_TIME=Chinese : (Traditional)_Taiwan.950 : attached base packages: : [1] stats graphics grDevices utils datasets methods base : loaded via a namespace (and not attached): : [1] httr_1.1.0 magrittr_1.5 R6_2.1.1 tools_3.2.4 : RCurl_1.95-4.8 yaml_2.1.13 rappdirs_0.3 memoise_0.2.1 crayon_1.3.1 : swirl_2.3.1-2 : [11] stringi_1.0-1 stringr_1.0.0 digest_0.6.8 testthat_0.11.0 : bitops_1.0-6 好读版:http://pastebin.com/DYaWwFQ2 library(stringi) library(stringr) library(xml2) library(pipeR) library(purrr) dat <- read_html("http://www.cwb.gov.tw/V7/climate/monthlyData/Data/mD201512.htm", "UTF-8") %>>% xml_find_all('//table[@class="Form00"]/tr') %>>% map(~ when(., identical(class(try({xml_find_one(., 'td')})), "try-error") ~ xml_find_all(., 'th'), ~ xml_find_all(., 'td') ) %>>% xml_text %>>% when( identical(.Platform$OS.type, "windows") ~ stri_conv(., "UTF-8", "BIG5"), ~ . ) %>>% str_replace_all("\\s", "") ) # 最上面的表头 dat[[1]] # [1] "项目" "温度(℃)" "雨量" # [4] "风速(公尺/秒)/风向(360°)/日期" "相对湿度(%)" "测站气压" # [7] "降水日数>=0.1毫米" "日照时数" # 下面的表格 do.call(rbind, dat[2:length(dat)]) ## 印出部分 # [,1] [,2] [,3] [,4] [,5] [,6] # [1,] "测站" "平均" "最高/日期" "最低/日期" "(毫米)" "最大十分钟风" # [2,] "阿里山" "9.8" "18.0/5" "2.8/29" "56.8" "4.8/340.0/26" # [3,] "鞍部" "12.3" "23.7/22" "2.5/17" "245.7" "14.3/350.0/10" # [4,] "板桥" "18.8" "29.9/22" "11.1/17" "80.6" "7.1/70.0/19" # [5,] "成功" "21.1" "27.8/21" "14.5/17" "86.4" "9.8/30.0/31" # [6,] "嘉义" "19.8" "30.2/24" "10.4/19" "31.4" "8.4/20.0/10" 不再建议使用XML做parse XML的工具,尽量转到xml2去 xml2至少有20%以上的效率提升,并且XML有一些memory leak的问题 函数说明: stri_conv 转换编码 (这个函数是在stringi里面) xml_find_all 用xpath找node (xml2) read_html 读网页 (xml2) when (purrr) 每一个是一个input是一个条件跟对应的output 例如: row %>>% when( identical(class(try({xml_find_one(., 'td')})), "try-error") ~ xml_find_all(., 'th') ~ xml_find_all(., 'td') ) 当identical(class(try({xml_find_one(., 'td')})), "try-error")成立就回传 xml_find_all(row, 'th') 没有条件的话就当成else,回传xml_find_all(row, 'td') 里面的.都是第一个input (就是%>>%左边传入的变数) 这个函数算是ifelse的强化版(ifelse不能输出block),可以直接在pipe里面用 不需要再存暂存变数中断pipe了 (我可能已经是pipe到走火入魔了) map (purrr) 等同於lapply,是hadley跟rstudio另外用C++重写的 str_replace_all 等同於gsub,只是第三个input改到第一个,方便pipe (这函数在stringr) %>>% 大体上与%>%一样,但是有一些比较好用的新功能,此处没用上就不说明了 另外,作者也宣称不会像%>%有时候会有input模糊的问题 (自行GOOGLE) -- R资料整理套件系列文: magrittr #1LhSWhpH (R_Language) http://tinyurl.com/j3ql84c data.table #1LhW7Tvj (R_Language) http://tinyurl.com/hr77hrn dplyr(上) #1LhpJCfB (R_Language) http://tinyurl.com/jtg4hau dplyr(下) #1Lhw8b-s (R_Language) tidyr #1Liqls1R (R_Language) http://tinyurl.com/jq3o2g3 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 180.218.152.118
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/R_Language/M.1462170593.A.3D2.html
1F:推 corel: 感谢,R真是一个神奇的语言.... 05/02 14:45
※ 编辑: celestialgod (180.218.152.118), 05/02/2016 15:07:03







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:BabyMother站内搜寻

TOP