首页 > 解决方案 > 按列分组到行值

问题描述

我正在尝试将行分组到列。在我的数据框 df 中,我需要按 A1 列分组,并在新的变异列 X1、X2 和 X3 中获取相应的 B1 值。

df <- data.frame(A1 = c("a is a cat","b is a basket","a is a cat","c for c2","b is a basket"),
                 B1 = c("alpha in","for beta","for gamma","for ceta","alpha in"))
df

        A1        B1
1    a is a cat  alpha in
2 b is a basket  for beta
3    a is a cat for gamma
4      c for c2  for ceta
5 b is a basket  alpha in

预期输出:

        A1        X1           X2       X3
1    a is a cat  alpha in   for gamma
2 b is a basket  for beta   alpha in  
3      c for c2  for ceta

标签: r

解决方案


我们创建一个按“A1”分组的序列并使用pivot_wider

library(dplyr)
library(tidyr)
library(stringr)
df %>%
  group_by(A1) %>%
  mutate(new = str_c("X", row_number())) %>%
  pivot_wider(names_from = new, values_from = B1)

推荐阅读