我已經從NOAA下載了一年的數據。問題是下載的數據中也有文本。所以,我找到了數據線的模式並將其提取出來。我使用的代碼如下:將單行轉換爲R中的多列
url <- "http://tidesandcurrents.noaa.gov/data_menu.shtml?bdate=20080101&edate=20081231&wl_sensor_hist=W2&relative=&datum=6&unit=0&shift=s&stn=8737048+Mobile+State+Docks%2C+AL&type=Historic+Tide+Data&format=View+Data"
download.file(url,destfile="data/mobile-docks-2008.dat")
mob2008 <- readLines("data/mobile-docks-2008.dat")
head(mob2008)
# Find pattern to separate data
pat <- grep(pattern="([0-9]+)\\s[0-9]",mob2008)
jd1 <- data.frame(mob2008[pat])
head(jd1)
> head(jd1)
mob2008.pat.
1 8737048 20080101 00:00 0.125 0.270
2 8737048 20080101 01:00 0.090 0.220
3 8737048 20080101 02:00 0.070 0.167
4 8737048 20080101 03:00 0.061 0.093
5 8737048 20080101 04:00 0.057 0.002
6 8737048 20080101 05:00 0.052 -0.108
如何將單行更改爲R中的多列?似乎是一個微不足道的問題,但我堅持這一點。
問題是數據幀jd1只有一列。我需要每行有5列。
'data'是我的工作目錄的文件夾。您只需要替換數據 –
如果您定期從網頁上抓取數據,則可能需要查看「XML」包。它有一個函數'htmlTreeParse',可以用來解決你的例子中的正則表達式搜索問題。如果你只是不時地下載數據,使用'htmlTreeParse'是有點矯枉過正的。 :) – cryo111
@ cryo111:謝謝你的建議。我會研究'XML'包 –