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

Group by a variable and merge row data from another column

我想按一列对数据进行分组,然后将不同列的字符串粘贴到一行中。例如,假设我有一个 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 变量分组并粘贴 [=19 的任何变体=]一起:

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

我尝试了 dplyr 包中的许多 group_bymutate 子句,但没有成功。

我相信您可以使用聚合函数来完成您正在寻找的事情。 这是你想要做的吗?

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

您可以使用 data.table 包轻松快速地完成此操作,如果您将学生设置为您的密钥:

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