r - 从 Eurostat 下载多个变量的数据
问题描述
我有一个variable_list
和一个country_list
我想下载数据的。我想自动化它,因为我不想自己推送每个下载。
我希望代码遍历variable_list
,下载各自的数据country_list
并将它们存储为"variable"_data
. 我使用get_eurostat进行下载。
我试过了:
variable_list <- list("demo_r_d3area", "demo_r_d3dens", "demo_r_fagec")
country_list <- list("AT","BE","DK")
for (i in variable_list) {
(assign(paste("data_", i, sep = ""), variable_list[[i]])) <-
get_eurostat(id = variable_list, time_format = "num",
filters = list(geo = country_list))
}
但我不认为我正朝着正确的方向前进。
解决方案
我相信读取数据的正确方法是lapply
循环进入列表。
library(eurostat)
variable_list <- list("demo_r_d3area", "demo_r_d3dens", "demo_r_fagec")
country_list <- list("AT","BE","DK")
data_list <- lapply(variable_list, function(v){
get_eurostat(
id = v,
time_format = "num",
filters = list(geo = country_list)
)
})
names(data_list) <- variable_list
str(data_list)
#List of 3
# $ demo_r_d3area: tibble [156 × 5] (S3: tbl_df/tbl/data.frame)
# ..$ unit : chr [1:156] "KM2" "KM2" "KM2" "KM2" ...
# ..$ landuse: chr [1:156] "L0008" "L0008" "L0008" "L0008" ...
# ..$ geo : chr [1:156] "AT" "AT" "AT" "AT" ...
# ..$ time : num [1:156] 1990 1991 1992 1993 1994 ...
# ..$ values : num [1:156] 82528 82528 82523 82518 82512 ...
# $ demo_r_d3dens: tibble [90 × 4] (S3: tbl_df/tbl/data.frame)
# ..$ unit : chr [1:90] "PER_KM2" "PER_KM2" "PER_KM2" "PER_KM2" ...
# ..$ geo : chr [1:90] "AT" "AT" "AT" "AT" ...
# ..$ time : num [1:90] 1990 1991 1992 1993 1994 ...
# ..$ values: num [1:90] 93 94 95 95.8 96.2 96.3 96.5 96.6 96.7 96.9 ...
# $ demo_r_fagec : tibble [3,780 × 5] (S3: tbl_df/tbl/data.frame)
# ..$ unit : chr [1:3780] "NR" "NR" "NR" "NR" ...
# ..$ age : chr [1:3780] "TOTAL" "TOTAL" "TOTAL" "TOTAL" ...
# ..$ geo : chr [1:3780] "AT" "AT" "AT" "AT" ...
# ..$ time : num [1:3780] 1990 1991 1992 1993 1994 ...
# ..$ values: int [1:3780] 90454 94629 95302 95227 92415 88669 88809 84045 81233 78138 ...
现在可以使用标准提取器运算符访问数据集。下面是一个访问的例子demo_r_d3area
。
head(data_list$demo_r_d3area)
## A tibble: 6 x 5
# unit landuse geo time values
# <chr> <chr> <chr> <dbl> <dbl>
#1 KM2 L0008 AT 1990 82528.
#2 KM2 L0008 AT 1991 82528.
#3 KM2 L0008 AT 1992 82523.
#4 KM2 L0008 AT 1993 82518.
#5 KM2 L0008 AT 1994 82512.
#6 KM2 L0008 AT 1995 82519.
推荐阅读
- javascript - 我无法使用变量设置我的电子窗口大小
- docker - 在 Linux 上的“localhost”访问 minikube 中正在运行的应用程序
- android - 如何使用房间数据库中的实体填充片段?
- batch-file - 如何运行 DISKPART 脚本并在批处理中显示输出
- javascript - UglifyJS:使用可选链接语法时出错
- node.js - 如何在 NestJS 中使用节点加密来消化二进制文件
- javascript - 如何优雅地编写和处理 NodeJS Promise
- embedded - 如何在 RTOS 中处理任务抢占极端情况
- c# - 在 C# 中向 REST API 调用 (OAuth 1.0) 添加参数会导致 Signature_Invalid (401) 错误
- python - 使用 Numpy Python 提高迭代函数的性能