我已经从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'包 –