2015-06-04 15 views
1

我正在研究一个研究项目,并被分配到做一些数据抓取和编写R中的代码,可以帮助从某个站点提取当前温度,例如wunderground .COM。现在,这可能有点抽象的问题,但没有人知道如何做到以下几点:R中的天气数据抓取和提取

temps <- readLines("http://www.wunderground.com/q/zmw:20904.1.99999") 
    edit(temps) 
    temps //gives me the source code for the website where I can look at the line that contains the temperature 
    ldata <- temps[lnumber] 
    ldata 
    # then have a few gsub functions that basically extracts 
    # just the numerical data (57.8 for example) from that line of code 

我有一个包含CVS文件: 我可以这样提取的特定邮政编码当前温度我在国内的每个城市的邮政编码和我在R中输入的邮政编码。根据邮政编码,城市和州情况安排在一张桌子上。我现在面临的挑战是编写一个方法(在这里使用java的比喻,因为我是R的新手),它基本上提取6-7个连续的邮政编码(在特定的邮政编码之后),并通过修改readLines函数中的链接来运行上述代码并在链接段zmw:XXXXX之后放入相应的邮政编码,然后根据该链接运行所有内容。现在我不太清楚如何从表中提取数据。也许有一个for循环功能?但后来我不知道如何使用它来修改链接。我认为这是我真正陷入困境的地方。我有一些Java背景,所以我理解如何解决这个问题,而不是语法知识。我知道这是一个相当抽象的问题,因为我没有提供很多代码,但我只想知道它们的函数/语法,它们将帮助我从表中提取数据,并以某种方式使用它来通过函数修改链接比手动做它。

+0

请注意,您的注释字符('/ ** /','//')在仅使用'#'的R中无效。 –

+0

@AlexA。是啊。我的错。我处于Java模式! –

+0

这个问题的范围可以缩小。这个词拼写应该从标题中消失,它应该是“从地下天气中获取天气数据”。在正文中,你可以说你愿意检索历史数据或者可能会删除它。你可以提到你想从10个邮编位置开始。代码可以保留,但它需要全部有效。您可以摆脱Java背景声明,它们不是真正相关的。 –

回答

2

所以这是关于天气地下数据。

您可以从wunderground的各个气象站下载csv文件,但是您需要知道气象站标识符。下面是在柯克兰,WA(KWAKIRKL8)气象站为例网址:

http://www.wunderground.com/weatherstation/WXDailyHistory.asp?ID=KWAKIRKL8&day=31&month=1&year=2014&graphspan=day&format=1

下面是一些R代码里面:

url <- 'http://www.wunderground.com/weatherstation/WXDailyHistory.asp?ID=KWAKIRKL8&day=31&month=1&year=2014&graphspan=day&format=1' 
    s <- getURL(url) 
    s <- gsub("<br>\n","",s) 
    wdf <- read.csv(con<-textConnection(s)) 

这里是你可以手动查找页面电台和他们的代码。

http://www.wunderground.com/wundermap/

既然你只需要几个可以手动挑选出来。

+0

我从unitedstateszipcodes.org下载了一个CVS文件,并将其放在我的工作目录中的一个文件夹中,并执行以下操作以将其排列在仅列出邮编的表中: 'ZipData <-read.csv(file.path(wd “DataImport”, “zip_code_data.csv”), \t \t colClasses = C( “字符”, “NULL”, “因子”, “NULL”, “NULL”, “因子”, \t \t \t “NULL” , “NULL”, “NULL”, “NULL”, “NULL”, “NULL”, “NULL”, “NULL”, \t \t \t “NULL”, “NULL”), \t \t COL。names = c(“zip”,“”,“city”,“”,“”,“state”,“”,“”,“”,“”,“”,“”,“”,“”, \t \t \t “”, “”)) 编辑(ZipData) as.numeric(ZipData $ ZIP)' 我认为这使得它更容易上运行一个循环,只是提取单独的邮政编码。 –

+0

邮编列表并不是很有帮助。我们需要一个密封列表。你需要多少个邮政编码数据? –

+0

10个顺序的。我到目前为止(虽然可能是基本的)是这样的: 'Input < - “20904” urlBefore < - “http://www.wunderground.com/q/zmw:” urlAfter < - “ .1.99999" 链路< - 糊(urlBefore,输入,urlAfter,九月= “”) 链路 <临时工 - readlines方法(链接) 临时工 编辑(临时工)' 这使我的源代码我可以运行所有的子字符串来检索当前温度。我认为它运作良好。 (对于凌乱的代码我很抱歉,我不知道如何将内联空格放在代码中) –