【问题标题】:Applying pivot_wider to dataframes within a list将 pivot_wider 应用于列表中的数据框
【发布时间】:2020-11-25 14:57:21
【问题描述】:

我已经创建了一个带有拆分的数据框列表,如下所示:

dataframes_list <- split(df, f = df$variable3)

每个数据帧(总共 131 个)都是长格式,并且具有相同的变量和结构。我想同时在所有这些中执行功能 pivot_wider。

我一直在努力使用 apply 系列的一些功能,但无法完成:

  1. 首先,我减少了每个数据框中的变量数量,只选择那些应该用于透视的变量

    dataframes_list_2 <- lapply(dataframes_list, function (x) select(x, variable1, variable2))

  2. 然后我尝试了 pivot_wider

    dataframes_list_3 <- lapply(dataframes_list_2, function(x) pivot_wider(x, names_from = variable1, values_from = variable 2)

我以这种方式获得的是包含每个变量 1 个观察值的数据帧列表,每个变量都是(在本例中)12 个值的向量。我想要的是这个:

因为有一个警告告诉我我的观察结果不是唯一的,所以我改变了上面的代码,包括这样的变量。但我得到的是这样的:

谁能给我一些关于这个问题的答案?

谢谢

列表中的每个数据框都有这个方面:

【问题讨论】:

  • 能否提供一些样本数据?您可以使用head(dput(data)) 并将输出复制/粘贴到您的帖子中。
  • 该格式现已在帖子中提供

标签: r list dataframe pivot-table lapply


【解决方案1】:

我遇到了同样的问题,我是这样解决的:

df_list <- lapply(1:length(my_list), 
function(x) (pivot_wider(my_list[[x]], names_from = names, values_from = values)))

bind_rows(df_list)

你会得到你需要的!希望对您有所帮助!

【讨论】:

    【解决方案2】:

    你可以试试:

    map(my_list, ~ (pivot_wider(.x, names_from=1,values_from= 2)))
    

    数字 1 和 2 是我的小标题中的列。您可以使用map_dfr。要组合数据集,您可以使用unnest of bind_rows

    【讨论】:

      猜你喜欢
      • 2020-04-24
      • 2021-03-20
      • 2014-09-25
      • 2017-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多