按变量分组并合并来自另一列的行数据

时间:2015-12-30 20:13:44

标签: r merge grouping dplyr rows

我希望将数据分组为一列,并将来自不同列的字符串粘贴到一行中。例如,假设我有data.frame A

library(dplyr)
A <- data.frame(student = rep(c("John Smith", "Jane Smith"), 3),
                variable1 = rep(c("Var1", "Var1", "Var2"), 2))
    A <- arrange(A, student)

     student variable1
1 Jane Smith      Var1
2 Jane Smith      Var1
3 Jane Smith      Var2
4 John Smith      Var1
5 John Smith      Var2
6 John Smith      Var1

但是,我需要将data.frame A转换为data.frame B,按student变量分组并粘贴variable1的任何变体一起:

B <- data.frame(student = c("John Smith", "Jane Smith"), 
                variable1 = c(paste("Var1", "Var2", sep = ","),     
                              paste("Var1", "Var2", sep = ",")))

     student variable1
1 John Smith Var1,Var2
2 Jane Smith Var1,Var2

我尝试了group_by套餐中的多个mutatedplyr条款,但未找到成功。

2 个答案:

答案 0 :(得分:1)

您可以使用data.table包轻松完成此操作,如果您将学生设置为关键,则可以快速执行此操作:

library(data.table)
A<-data.table(A)
setkey(A, student)
B<-A[, paste(unique(variable1), collapse=", "),by=student]

答案 1 :(得分:0)

我相信你可以使用聚合函数来做你想要的。 这是你想要做的吗?

df=unique(A)
agg=aggregate(df$variable1, list(df$student), paste, collapse=",")

> agg
             Group.1         x
        1 Jane Smith Var1,Var2
        2 John Smith Var1,Var2