按列到行值分组

时间:2019-11-22 19:16:09

标签: r

我正在尝试将行分组为列。在我的数据帧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

3 个答案:

答案 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
相关问题