我有一个如下所示的数据框列表:
df_type1 <- data.frame(unit_name=c("A", "B", "C", "D"),
year_2014=c(653, 49, 563, 239),
year_2015=c(29, 63, 4879, 34),
year_2016=c(349, 340, 1, 47))
df_type2 <- data.frame(unit_name=c("A", "B", "C", "D"),
year_2014=c(573, 59, 563, 2999),
year_2015=c(39, 6390, 479, 98),
year_2016=c(5649, 640, 890, 12))
list_types <- list(df_type1, df_type2)
这里,单位A到D的值对应于一年。
从这个列表中,我想获得一个新列表,其中每个数据框对应于相同单位 A 到 D 的每个单独年份的值。这些新数据框应如下所示:
df_2014 <- data.frame(unit_name=c("A", "B", "C", "D"),
type1=c(653, 49, 563, 239), # these are the values of the column year_2014 in df_type1
type2=c(573, 59, 563, 2999))
df_2015 <- data.frame(unit_name=c("A", "B", "C", "D"),
type1=c(29, 63, 4879, 34),
type2=c(39, 6390, 479, 98))
df_2016 <- data.frame(unit_name=c("A", "B", "C", "D"),
type1=c(349, 340, 1, 47),
type2=c(5649, 640, 890, 12))
谢谢!
这应该给出:
list_types |>
purrr::map_dfr(~.x, .id = "TYPE") |>
tidyr::pivot_longer(!c(TYPE, unit_name )) |>
tidyr::pivot_wider(names_from = TYPE, names_prefix = "type") |>
split(~name)
$year_2014
# A tibble: 4 × 4
unit_name name type1 type2
<chr> <chr> <dbl> <dbl>
1 A year_2014 653 573
2 B year_2014 49 59
3 C year_2014 563 563
4 D year_2014 239 2999
$year_2015
# A tibble: 4 × 4
unit_name name type1 type2
<chr> <chr> <dbl> <dbl>
1 A year_2015 29 39
2 B year_2015 63 6390
3 C year_2015 4879 479
4 D year_2015 34 98
$year_2016
# A tibble: 4 × 4
unit_name name type1 type2
<chr> <chr> <dbl> <dbl>
1 A year_2016 349 5649
2 B year_2016 340 640
3 C year_2016 1 890
4 D year_2016 47 12
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句