我正在尝试将行分组为列。在我的数据帧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
答案 0 :(得分:1)
我们创建一个按“ 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)
答案 1 :(得分:1)
您可以使用data.table
:
> library(data.table)
> setDT(df)[,n:=paste0('X',1:.N),by=A1]
> dcast.data.table(df,A1~n,value.var = 'B1')
答案 2 :(得分:0)
Base R解决方案:
Reentrent Lock
数据:
synchronized