我正在尝试使用blsAPI提取BLS数据,但一直获取空数据集。当我运行BLS提供的示例代码时,它可以正常工作,但是当我在不同的系列ID上运行相同的代码时,我什么也没得到。我在下面包含了我的代码:
# ENU04013105111150 = Wages
# CXUMENBOYSLB0101M = expenditures
payload<-list('seriesid'=c('ENU04013105111150','CXUMENBOYSLB0101M'),
'startyear'=1999,'endyear'=2002)
response<-blsAPI(payload,3)
json<-fromJSON(response)
apiDF<-function(data){
df <- data.frame(year=character(),
period=character(),
periodName=character(),
value=character(),
stringsAsFactors=FALSE)
i <- 0
for(d in data){
i <- i + 1
df[i,] <- unlist(d)
}
return(df)
}
wages.df<-apiDF(json$Results$series[[1]]$data)
expend.df<-apiDF(json$Results$series[[2]]$data)
names(wages.df)[4]<-'wages'
names(expend.df)[4]<-'expend'
df<-merge(wages.df, expend.df)
df [1] year period periodName wages expend <0 rows> (or 0-length row.names)
我正在尝试获取有关工资和支出的数据,然后可以对其进行操纵和绘制。
答案 0 :(得分:0)
这里似乎发生了几件事。首先,您要向blsAPI函数的api_version参数传递3的值,但是唯一可接受的值为1和2。第二,看来ENU04013105111150系列没有您所要求的年份的数据。这是我跑的:
> library(rjson)
> library(blsAPI)
>
> payload<-list('seriesid'=c('ENU04013105111150','CXUMENBOYSLB0101M'),
+ 'startyear'=1999,'endyear'=2002)
> response<-blsAPI(payload, 2)
> json<-fromJSON(response)
> apiDF<-function(data){
+ df <- data.frame(year=character(),
+ period=character(),
+ periodName=character(),
+ value=character(),
+ stringsAsFactors=FALSE)
+
+ i <- 0
+ for(d in data){
+ i <- i + 1
+ df[i,] <- unlist(d)
+ }
+ return(df)
+ }
>
> json$message
[1] "No Data Available for Series ENU04013105111150 Year: 1999" "No Data Available for Series ENU04013105111150 Year: 2000"
[3] "No Data Available for Series ENU04013105111150 Year: 2001" "No Data Available for Series ENU04013105111150 Year: 2002"
>
> wages.df<-apiDF(json$Results$series[[1]]$data)
> expend.df<-apiDF(json$Results$series[[2]]$data)
>
> dim(wages.df)
[1] 0 4
> dim(expend.df)
[1] 4 4
请注意,支出可以正确读取(因为我将api_version更改为2),但是在该时间段内没有其他系列的数据。