我有一个群组和名称列表,如下面的DF所示。我希望按字母顺序排列这个列表并连接用逗号分隔的每个名称,如下面的DF2所示。我认为这很简单,但事实证明它比预期更具挑战性!
DF <- tibble::data_frame(
Group = c(1, 1, 1, 2, 2, 3, 3, 3),
Name = c("A", "B", "C", "B", "A", "B", "C", "A"))
DF2 <- tibble::data_frame(
Group = c(1, 2, 3),
Name = c("A, B, C", "A, B", "A, B, C"))
我很感激任何帮助解决这个问题,以解释每个组中列出的未知数量的名称,无论是否有dplyr管道。
谢谢!
答案 0 :(得分:3)
我们可以使用data.table
library(data.table)
setDT(DF)[order(Name), .(Comb = toString(Name)) , by = Group]
答案 1 :(得分:3)
在基地R:
aggregate(Name~Group, DF, function(x) paste0(sort(x), collapse = ","))
# Group Name
#1 1 A,B,C
#2 2 A,B
#3 3 A,B,C