按字母顺序排序名称列表

时间:2016-10-28 15:29:08

标签: r dataframe dplyr tidyr stringr

我有一个群组和名称列表,如下面的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管道。

谢谢!

2 个答案:

答案 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