R:按字母顺序对项目字符串进行排序

时间:2017-11-16 19:35:28

标签: r

我有一个数据框,数据框中的一列包含一串用逗号分隔的项目,如下所示;

[1] "A, D, B, C"
[2] "D, A, B, C"
[3] "B, A, C, D"
etc...

有没有办法在这些字符串中对这些字符串进行排序,以便我可以得到类似的内容?:

"A, B, C, D"
"A, B, C, D"
"A, B, C, D"

我接近以下内容:

library(gtools)
df$col <- sapply(df$col , function (x)
    mixedsort(strsplit(paste(x, collapse = ','), ',')[[1]]))

但是这会将结果作为列表输出,所以我不能在输出上对dplyr进行任何操作(比如group_by)

1 个答案:

答案 0 :(得分:5)

x = c("a, b, c, d", "d, a, b, c", "b, a, c, d")
y = unname(sapply(x, function(x) {
    paste(sort(trimws(strsplit(x[1], ',')[[1]])), collapse=',')} ))
y

[1] "a,b,c,d" "a,b,c,d" "a,b,c,d"

trimws()删除空格,以便排序在分割字符串上正常工作。 sort()按字母顺序排序。 paste(..., collapse = ',')将排序后的字符串向量连接成一个字符串。