我有一个数据框,数据框中的一列包含一串用逗号分隔的项目,如下所示;
[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)
答案 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 = ',')
将排序后的字符串向量连接成一个字符串。