【问题标题】:Using tidyverse to divide / split / break a variable into other variables by groups使用 tidyverse 将一个变量按组划分/拆分/分解为其他变量
【发布时间】:2020-08-31 05:27:55
【问题描述】:

假设我有这种数据集

ds <- data.frame(group = c("A","B","C"),
                 value = rnorm(90,10,15))

现在,我想使用 dplyr(或 purrr + broom)将值变量“划分”为三列,如下图所示。

我尝试过 pivot_wider、group_split 和分离,但没有成功。

以后,我将使用这些变量来计算相关系数。 我想留在 tidyverse 环境中。 谢谢

代码:

ds <- data.frame(group = c("A","B","C"),
                 value = rnorm(90,10,15))

【问题讨论】:

    标签: r dplyr group-by tidyverse purrr


    【解决方案1】:

    按照要求坚持tidyverse 上下文,pivot_wider 的问题是存在重复的行标识符。按group 分组也不能解决这个问题。我个人认为@Duck 的解决方案是可行的,但如果你真的想坚持tidyverse,this 评论提供了一种解决方法(this 博客文章更详细地讨论了它)。这个想法是用row_number()添加一个唯一的行标识符,然后传播数据:

    ds %>% 
      group_by(group) %>% 
      mutate(grouped_id = row_number()) %>% 
      pivot_wider(names_from = group, values_from = value)
    

    然后您可以根据需要删除或替换 grouped_id 变量。

    【讨论】:

      【解决方案2】:

      也许这可以解决你的问题:

      df <- unstack(ds,value~group)
      

      【讨论】:

        猜你喜欢
        • 2016-04-06
        • 2011-08-12
        • 2011-10-02
        • 2013-12-10
        • 2021-12-01
        • 1970-01-01
        • 2018-05-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多