我有以下几点:
a_aa a_ab a_ac b_aa b_ab b_ac
2 3 3 3 1 2
3 4 1 1 3 1
期望的结果:
a_aa b_aa a_ab b_ab a_ac b_ac
2 3 3 1 3 2
3 1 4 3 1 1
带数据的代码:
d <- "a_aa a_ab a_ac b_aa b_ab b_ac
2 3 3 3 1 2
3 4 1 1 3 1"
dd <- read.table(textConnection(object = d), header = T)
我目前的解决方案是手动的:
dd %>% select(a_aa, b_aa, a_ab, b_ab, a_ac, b_ac)
但是,当列数很大时,它是繁重的。任何想法如何通过分组进行这种列排序(例如序列 a_etc1、b_etc1、a_etc2、b_etc2)?谢谢!
最佳答案
这是解决问题的一种方法:
dd[order(gsub(".+_", "", names(dd)))]
# or
dd %>%
select(order(gsub(".+_", "", names(.))))
a_aa b_aa a_ab b_ab a_ac b_ac
1 2 3 3 1 3 2
2 3 1 4 3 1 1
关于按正则表达式/模式对多列重新排序和分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72926163/