我正在处理的数据集如下所示
a b vara_1 vara_2 vara_3 vara_4 vara_5 .... varb_1 varb_2 varb_3 varb_4
-----------------------------------------------------------------------------
100 120 a b c d e w x y z
我想根据
paste0
函数生成的特定顺序更改数据集的列顺序:> paste0(c("vara_", "varb_"),rep(1:10, each=2))
[1] "vara_1" "varb_1" "vara_2" "varb_2" "vara_3" "varb_3" "vara_4" "varb_4" "vara_5" "varb_5"
[11] "vara_6" "varb_6" "vara_7" "varb_7" "vara_8" "varb_8" "vara_9" "varb_9" "vara_10" "varb_10"
因此数据集的最终外观将变为
a b vara_1 varb_1 vara_2 varb_2 vara_3 varb_3 ....
-----------------------------------------------------------------------------
100 120 a w b x c y ....
无论如何,可以将其转换为tidyverse的
select()
函数可读的格式吗?我努力了
condition <- paste0(c("vara_", "varb_"),rep(1:10, each=2)
data <- data %>% select(a, b, condition)
而且
data <- data %>% noquote(select(a, b, condition))
也没有运气。列出
select()
的所有变量/列顺序的方法是否可行?任何帮助或实现同一目标的替代方式,不胜感激!
最佳答案
您应该使用select_at
而不是select
数据
df <- data.frame(a=100, b=120, vara_1="a", vara_2 = "b", vara_3 = "c",
varb_1 = "d", varb_2 = "e", varb_3 = "f")
# a b vara_1 vara_2 vara_3 varb_1 varb_2 varb_3
# 1 100 120 a b c d e f
指定列
thesecols <- c("a", "b", paste0(c("vara_", "varb_"),rep(1:3, each=2)))
使用
select_at
library(dplyr)
df %>%
select_at(vars(thesecols))
# a b vara_1 varb_1 vara_2 varb_2 vara_3 varb_3
# 1 100 120 a d b e c f
关于r - 粘贴到tidyverse的select()中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47447105/