我在使用read.delim
或read.table
从base R中的USGS.gov下载特定的制表符分隔的数据集时遇到了问题。我可能犯了一个明显的错误,但我似乎不知道是什么。
首先,下面的查询在base R中运行良好,并检索俄亥俄河上Markland Dam的所有水位数据。它也适用于其他水坝。
Markland <- read.delim(("https://nwis.waterdata.usgs.gov/ky/nwis/uv?cb_00065=on&format=rdb&site_no=03277200&period=&begin_date=1950-09-30&end_date=2030-12-31"),
stringsAsFactors=FALSE, skip=28, header=TRUE)
但是,我对另一个表McAlpine Dam Dam downstream的查询不起作用。这些数据的结构几乎完全相同。我尝试了read.table帮助中提供的所有读取选项,但都无济于事。我不确定这个表有什么不同,或者这个查询需要更改什么。
McAlpine <- read.delim(("https://nwis.waterdata.usgs.gov/ky/nwis/uv?cb_00065=on&format=rdb&site_no=03294500&period=&begin_date=1950-09-30&end_date=2030-12-31"),
skipNul=TRUE, blank.lines.skip=TRUE, sep = "\t",
stringsAsFactors=FALSE, skip=40, header=FALSE , fill=TRUE)
提前谢谢你!
发布于 2018-05-10 14:51:52
因此,我实际上能够通过将查询的大小分解为单个年份来使其工作。该表将从USGS加载,但我猜R由于某种原因而超时。
McAlpine2007 <- read.delim(("https://nwis.waterdata.usgs.gov/ky/nwis/uv?
cb_00065=on&format=rdb&site_no=03294500&period=&begin_date=2007-01-
01&end_date=2007-12-31"), stringsAsFactors=FALSE, skip=40, header=FALSE)
McAlpine2008 <- read.delim(("https://nwis.waterdata.usgs.gov/ky/nwis/uv?
cb_00065=on&format=rdb&site_no=03294500&period=&begin_date=2008-01-
01&end_date=2008-12-31"), stringsAsFactors=FALSE, skip=40, header=FALSE)
rbind(McAlpine2007,McAlpine2008)
发布于 2018-05-10 15:06:02
考虑到返回查询需要多长时间,我认为它只是超时,并假设没有数据。你可以像阿利斯泰尔建议的那样使用httr
,或者使用RCurl
来获取具有指定timeout
的数据,然后读取它。
if(!require(RCurl)) {install.packages("RCurl"); library(RCurl)}
McAlp <- getURL("https://nwis.waterdata.usgs.gov/ky/nwis/uv?cb_00065=on&format=rdb&site_no=03294500&period=&begin_date=1950-09-30&end_date=2030-12-31", timeout = 300) # Try without a timeout, then add one if needed. It worked for me without a timeout argument.
McAlpine <- read.delim(textConnection(McAlp), sep = "\t", stringsAsFactors = FALSE, skip = 40, header = FALSE)
head(McAlpine)
V1 V2 V3 V4 V5 V6
1 USGS 3294500 2007-10-01 03:30 EDT 10.27 A
2 USGS 3294500 2007-10-01 03:45 EDT 10.25 A
3 USGS 3294500 2007-10-01 04:00 EDT 10.22 A
4 USGS 3294500 2007-10-01 04:15 EDT 10.21 A
5 USGS 3294500 2007-10-01 04:30 EDT 10.22 A
6 USGS 3294500 2007-10-01 04:45 EDT 10.29 A
https://stackoverflow.com/questions/50275240
复制相似问题