我有一个如下所示的数据帧列表:

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

R相关问答推荐

Facet_wrap具有不同bin宽度值的图表

使用lares::corr_var函数在for循环中分配变量的问题

在R中使用GG Plot时如何 suppress 等值线图中的彩色条

带有gplot 2的十字舱口

使用R的序列覆盖

R箱形图gplot 2 4组但6个参数

通过使用str_detect对具有相似字符串的组进行分组

R for循环返回到先前值

然后根据不同的列值有条件地执行函数

如何自定义3D散点图的图例顺序?

一小时满足条件的日期的 Select

plotly hover文本/工具提示在shiny 中不起作用

R Read.table函数无法对制表符分隔的数据正常工作

在ggplot2的框图中绘制所有级别的系数

使用R将简单的JSON解析为嵌套框架

在不对R中的变量分组的情况下取两行的平均值

为R中的16组参数生成10000个样本的有效方法是什么?

R中治疗序列的相对时间指数

在不重复主题的情况下重新排列组

将美学添加到ggploy中的文本标签