我看到了类似的问题,但要么不是R或有些不同。我正在尝试从USGS网站下载多个站点的水质数据,类似于以下链接:USGS Data
我所要做的就是从类似于上面的URL下载数据,并以可用的格式将数据放入数据框中。我知道有些网址可能没有数据,因此需要进行错误检查。
已经为这个问题提供了一些答案,我很欣赏它。
答案 0 :(得分:1)
我不确定你想要什么,但如果问题是如何将这个网址中的内容转换为数据框,那么:
url <- "http://waterdata.usgs.gov/nj/nwis/uv?cb_00010=on&format=rdb&site_no=01387940&period=&begin_date=2014-05-14&end_date=2014-05-21"
df <- read.csv(url,header=T,sep="\t",skip=24)
会奏效。数据以制表符分隔,因此我们指定sep="\t"
。前24行是评论,所以我们跳过这些。您可能必须删除第一行,因为它包含的信息看起来与其他行的格式不同。要获取实时数据,请从网址查询字符串中删除名称 - 值对end_date=2014-05-21
。
编辑对OP评论的回应。
从网站检索数据这是一种有点冗长但更清晰的方法。请注意,没有错误检查。这假定您提供的站点实际上将拥有数据(并非所有站点都有)。
get.waterdata <- function(site) {
host <- "http://waterdata.usgs.gov/nj/nwis/uv"
query <- "cb_00010=on&format=rdb&period=&begin_date=2014-05-14&end_date=2014-05-21"
query <- paste(query,paste("site_no",site,sep="="),sep="&")
url <- paste(host,query,sep="?")
df <- read.csv(url,header=T,sep="\t",skip=24)
return(df)
}
df <- get.waterdata("01387950")