使用tidyverse将变量按组划分/拆分/分解为其他变量

问题描述 投票:0回答:2

假设我有这种数据集

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

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

我尝试了pivot_wider,group_split和分离的方法,但是没有成功。

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

代码:

ds <- data.frame(group = c("A","B","C"),
                 value = rnorm(90,10,15))
group-by dplyr tidyverse purrr
2个回答
1
投票

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

df <- unstack(ds,value~group)

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变量。

© www.soinside.com 2019 - 2024. All rights reserved.