按组排序和连接值
Sort and concatenate values by group
我有一个组和名称列表,如下面的 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 管道。
谢谢!
我们可以使用data.table
library(data.table)
setDT(DF)[order(Name), .(Comb = toString(Name)) , by = Group]
在基数 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
我有一个组和名称列表,如下面的 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 管道。
谢谢!
我们可以使用data.table
library(data.table)
setDT(DF)[order(Name), .(Comb = toString(Name)) , by = Group]
在基数 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