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

使用tidyverse按组将变量划分/拆分/拆分为其他变量,r,dplyr,group-by,tidyverse,purrr,R,Dplyr,Group By,Tidyverse,Purrr,假设我有这样的数据集 ds <- data.frame(group = c("A","B","C"), value = rnorm(90,10,15)) ds也许这可以解决您的问题: df <- unstack(ds,value~group) df也许这可以解决您的问题: df <- unstack(ds,value~group) df根据请求坚持使用tidyverse上下文,pivot\u wide的问题在于存在重复的行标识符。按gro

假设我有这样的数据集

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

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

df <- unstack(ds,value~group)

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

df <- unstack(ds,value~group)

df根据请求坚持使用
tidyverse
上下文,
pivot\u wide
的问题在于存在重复的行标识符。按
group
分组也不能解决这个问题。我个人认为@Duck的解决方案是可行的,但如果你真的想坚持使用tidyverse,评论提供了一个解决办法(博客文章对此进行了更详细的讨论)。其思想是添加一个具有
行号()的唯一行标识符,然后传播数据:

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

然后,您可以根据需要删除或替换
grouped\u id
变量。

根据请求坚持使用
tidyverse
上下文,
pivot\u wider
的问题在于存在重复的行标识符。按
group
分组也不能解决这个问题。我个人认为@Duck的解决方案是可行的,但如果你真的想坚持使用tidyverse,评论提供了一个解决办法(博客文章对此进行了更详细的讨论)。其思想是添加一个具有
行号()的唯一行标识符,然后传播数据:

ds %>% 
  group_by(group) %>% 
  mutate(grouped_id = row_number()) %>% 
  pivot_wider(names_from = group, values_from = value)
然后,您可以根据需要删除或替换
分组的\u id
变量