首页 > 解决方案 > 有没有办法通过从 R 中的列表加入来创建数据框?

问题描述

我有一个列表,命名ind_prov和结构如下:

  1. 它有 22 个元素。
  2. 所有元素都是类“tbl_df”“tbl”“data.frame”。
  3. 每个元素都有三个 colmun。
    • 第一栏:fecha
    • 第二栏:省
    • 第三列:一个元素,一个名为 list_vars 的向量,长度为 22。
      • 示例:names(ind_prov[[1]]) 等于“fecha”“provincia”“emp_pob”。emp_pob 是向量 list_vars 的第一个元素。

我想要一个这样的data.frame,但有22个元素:

> provincias <-
+   ind_prov[[list_vars[1]]] %>%
+   left_join(ind_prov[[list_vars[2]]],
+             by = c("fecha", "provincia")) %>%
+   left_join(ind_prov[[list_vars[3]]],
+             by = c("fecha", "provincia"))
> provincias
# A tibble: 2,086 x 5
   fecha      provincia              emp_pob     ofc_pob   caje_pob
   <date>     <chr>                    <dbl>       <dbl>      <dbl>
 1 2013-03-01 Monte Cristi         0.000184  0.0000117   0.0000235 
 2 2013-03-01 San Pedro de Macorís 0.00413   0.0000869   0.000799  
 3 2013-03-01 San Pedro de Macorís 0.00413   0.000191    0.000799  
 4 2013-03-01 El Seibo             0.000152  0.00000338  0.0000236 
 5 2013-03-01 El Seibo             0.000152  0.0000101   0.0000236 
 6 2013-03-01 Hato Mayor           0.000339  0.00000595  0.0000535 
 7 2013-03-01 Hato Mayor           0.000339  0.0000297   0.0000535 
 8 2013-03-01 Monte Plata          0.0000215 0.00000117  0.00000430
 9 2013-03-01 Monte Plata          0.0000215 0.000000782 0.00000430
10 2013-03-01 Azua                 0.000634  0.0000474   0.0000533 
# ... with 2,076 more rows

我不想这样做:

provincias <-
  ind_prov[[list_vars[1]]] %>%
  left_join(ind_prov[[list_vars[2]]],
            by = c("fecha", "provincia")) %>%
  left_join(ind_prov[[list_vars[3]]],
            by = c("fecha", "provincia"))
  left_join(ind_prov[[list_vars[4]]],
            by = c("fecha", "provincia")) %>%
  left_join(ind_prov[[list_vars[5]]],
            by = c("fecha", "provincia")) %>%
  left_join(ind_prov[[list_vars[6]]],
            by = c("fecha", "provincia")) %>%
  left_join(ind_prov[[list_vars[7]]],
            by = c("fecha", "provincia")) %>%
  left_join(ind_prov[[list_vars[8]]],
            by = c("fecha", "provincia")) %>%
  left_join(ind_prov[[list_vars[9]]],
            by = c("fecha", "provincia")) %>%
  left_join(ind_prov[[list_vars[10]]],
            by = c("fecha", "provincia")) %>%
  left_join(ind_prov[[list_vars[11]]],
            by = c("fecha", "provincia")) %>%
  left_join(ind_prov[[list_vars[12]]],
            by = c("fecha", "provincia")) %>%
  left_join(ind_prov[[list_vars[13]]],
            by = c("fecha", "provincia")) %>%
  left_join(ind_prov[[list_vars[14]]],
            by = c("fecha", "provincia")) %>%
  left_join(ind_prov[[list_vars[15]]],
            by = c("fecha", "provincia")) %>%
  left_join(ind_prov[[list_vars[16]]],
            by = c("fecha", "provincia")) %>%
  left_join(ind_prov[[list_vars[17]]],
            by = c("fecha", "provincia")) %>%
  left_join(ind_prov[[list_vars[18]]],
            by = c("fecha", "provincia")) %>%
  left_join(ind_prov[[list_vars[19]]],
            by = c("fecha", "provincia")) %>%
  left_join(ind_prov[[list_vars[20]]],
            by = c("fecha", "provincia")) %>%
  left_join(ind_prov[[list_vars[21]]],
            by = c("fecha", "provincia")) %>%
  left_join(ind_prov[[list_vars[22]]],
            by = c("fecha", "provincia"))

标签: rloopsrstudio

解决方案


推荐阅读