运行 BLS API 大型数据框,每个查询限制结果并保存为 R 中的数据框
Run BLS API large dataframe with results per query limit and save as dataframe in R
我正在尝试使用 BLS API 提取大量数据(~500K 个单独的系列 ID)并将输出存储为数据帧。
我 运行 遇到了两个问题:
- BLS API 每天只允许 50 results/query 和 2500 次查询
- 将输出保存为编译数据帧
我创建了一个只有一列“系列 ID”的数据框,这是 BLS API 需要吐出该特定 ID 上的数据的信息。为了绕过 results/query 限制,我尝试将所有 500K 系列 ID 的数据框拆分为 250 个一组(以保持在每天的查询限制之下)并使用一个函数来 运行 bls_api 分别对每个组进行编码。我相信这可能有效,但我看不到输出。为了尝试将输出保存在数据框中,我创建了一个空白数据框并尝试将 BLS 数据函数输出与空白数据框绑定。
创建一个空白数据框以将 BLS 输出存储在
output <- data.frame();
运行 BLS API 250 行系列 ID 的段代码
unlist(lapply(split(df$`Series ID`, rep(1:250)),
function(Data)
{bls_data <- bls_api(Data,startyear=2016, endyear= 2019, Sys.getenv("BLS_KEY"));
output <- rbind(output,bls_data)}))
虽然我在控制台中看到了 BLS_API (ie. "REQUEST_SUCCEEDED")
的输出,但输出并没有保存为数据框“输出”(数据框仍然是空白)。
我是函数的新手,所以任何建议都很有价值!
这是我能够弄清楚的。不是最优雅的解决方案,但可以完成工作!
定义每组所需的行数
nSegments <- 250
根据上面定义的行数将系列 ID 拆分成段
series_ids_split <- split(df,
(seq(nrow(df))-1) %/% nSegments)
运行系列ID函数,数据输出确定
total_output <- lapply(eries_ids_split, function(x){
x <- bls_api(x,startyear = 2018, endyear = 2019, Sys.getenv("BLS_KEY"))
return(x)
})
将数据帧列表合并到输出数据帧中
output_df <- do.call(rbind,total_output)
我正在尝试使用 BLS API 提取大量数据(~500K 个单独的系列 ID)并将输出存储为数据帧。
我 运行 遇到了两个问题:
- BLS API 每天只允许 50 results/query 和 2500 次查询
- 将输出保存为编译数据帧
我创建了一个只有一列“系列 ID”的数据框,这是 BLS API 需要吐出该特定 ID 上的数据的信息。为了绕过 results/query 限制,我尝试将所有 500K 系列 ID 的数据框拆分为 250 个一组(以保持在每天的查询限制之下)并使用一个函数来 运行 bls_api 分别对每个组进行编码。我相信这可能有效,但我看不到输出。为了尝试将输出保存在数据框中,我创建了一个空白数据框并尝试将 BLS 数据函数输出与空白数据框绑定。
创建一个空白数据框以将 BLS 输出存储在
output <- data.frame();
运行 BLS API 250 行系列 ID 的段代码
unlist(lapply(split(df$`Series ID`, rep(1:250)),
function(Data)
{bls_data <- bls_api(Data,startyear=2016, endyear= 2019, Sys.getenv("BLS_KEY"));
output <- rbind(output,bls_data)}))
虽然我在控制台中看到了 BLS_API (ie. "REQUEST_SUCCEEDED")
的输出,但输出并没有保存为数据框“输出”(数据框仍然是空白)。
我是函数的新手,所以任何建议都很有价值!
这是我能够弄清楚的。不是最优雅的解决方案,但可以完成工作!
定义每组所需的行数
nSegments <- 250
根据上面定义的行数将系列 ID 拆分成段
series_ids_split <- split(df,
(seq(nrow(df))-1) %/% nSegments)
运行系列ID函数,数据输出确定
total_output <- lapply(eries_ids_split, function(x){
x <- bls_api(x,startyear = 2018, endyear = 2019, Sys.getenv("BLS_KEY"))
return(x)
})
将数据帧列表合并到输出数据帧中
output_df <- do.call(rbind,total_output)