2015-06-04 16 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方法(鏈接) 臨時工 編輯(臨時工)' 這使我的源代碼我可以運行所有的子字符串來檢索當前溫度。我認爲它運作良好。 (對於凌亂的代碼我很抱歉,我不知道如何將內聯空格放在代碼中) –