在R中使用API并转换为数据帧格式
我基本上是试图调用API从政府网站检索天气信息在R中使用API并转换为数据帧格式,r,api,R,Api,我基本上是试图调用API从政府网站检索天气信息 library(data.table) library(jsonlite) library(httr) base<-"https://api.data.gov.sg/v1/environment/rainfall" date1<-"2020-01-25" call1<-paste(base,"?","date","=",date1,sep="") get_rainfall<-GET(call1) get_rainfall_
library(data.table)
library(jsonlite)
library(httr)
base<-"https://api.data.gov.sg/v1/environment/rainfall"
date1<-"2020-01-25"
call1<-paste(base,"?","date","=",date1,sep="")
get_rainfall<-GET(call1)
get_rainfall_text<-content(get_rainfall,"text")
get_rainfall_json <- fromJSON(get_rainfall_text, flatten = TRUE)
get_rainfall_df <- as.data.frame(get_rainfall_json)
库(data.table)
图书馆(jsonlite)
图书馆(httr)
base您的“get\u rainment\u json”对象以“list”的形式返回。试图将其转换为数据帧就是您得到错误的地方。如果您在列表中指定了“items”对象,您的错误将得到解决!(这样做的结果看起来像是在对象中嵌入了更多的数据……因此您必须将其解析为您感兴趣的格式。)
获取您正在使用的R包?我用“GET”猜你用的是“httr”?我用的是httr和jsonliteHi,谢谢!它可以工作,但是现在,我在我的数据域的1内有一个列表。如何将此列表转换为2个不同的数据域?刚刚添加了另一个循环以获取最终数据集!看一看,并提出任何问题。
library(data.table)
library(jsonlite)
library(httr)
library(dplyr)
base <- "https://api.data.gov.sg/v1/environment/rainfall"
date1 <- "2020-01-25"
call1 <- paste(base, "?", "date", "=", date1, sep = "")
get_rainfall <- GET(call1)
get_rainfall_text <- content(get_rainfall,"text")
get_rainfall_json <- fromJSON(get_rainfall_text, flatten = TRUE)
get_rainfall_df <- as.data.table(get_rainfall_json$items)
df <- data.frame()
for (row in 1:nrow(get_rainfall_df)) {
new_date <- get_rainfall_df[row, ]$readings[[1]]
colnames(new_date) <- c("stationid", "value")
date <- get_rainfall_df[row, ]$timestamp
new_date$date <- date
df <- bind_rows(df, new_date)
}