按变量分组并合并来自另一列的行数据
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_by
和 mutate
子句,但没有成功。
我相信您可以使用聚合函数来完成您正在寻找的事情。
这是你想要做的吗?
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]
我想按一列对数据进行分组,然后将不同列的字符串粘贴到一行中。例如,假设我有一个 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_by
和 mutate
子句,但没有成功。
我相信您可以使用聚合函数来完成您正在寻找的事情。 这是你想要做的吗?
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]