我希望将数据分组为一列,并将来自不同列的字符串粘贴到一行中。例如,假设我有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
套餐中的多个mutate
和dplyr
条款,但未找到成功。
答案 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