我需要能够从A-Z然后从AA-ZZ订购我的数据输出。问题是,我只能让R按字母顺序排序,因此AA在B和C之前。
有没有一种方法可以先按字母顺序将数据排序为单个字母,然后再按字母顺序将两个字母(a,b,c,aa,bb,cc)排序?
给出
set.seed(1)
x <- sample(c("a", "b", "c", "aa", "bb", "cc"))
x
# [1] "b" "cc" "c" "aa" "a" "bb"
您可以做
x[order(nchar(x), x)]
# [1] "a" "b" "c" "aa" "bb" "cc"
我们可以将unlist
和split
一起使用>
unlist(lapply(split(v1, nchar(v1)), sort), use.names = FALSE)
数据
set.seed(24)
v1 <- sample(c(LETTERS[1:5], strrep(LETTERS[1:5], 2)), 20, replace = TRUE)