使用 dplyr::select 排列列,无需硬编码

arranging columns using dplyr::select without hardcoding

提问人:rajvijay 提问时间:4/27/2015 更新时间:4/27/2015 访问量:552

问:

我正在加载一个 csv 文件。我正在尝试根据我拥有的列名字符串来排列列。我有大约 50 列。我很好奇如何使用

  dplyr::select 

我看到它采用的参数是直接的列名,而不是将其引用为字符串。所以可能必须对名称进行硬编码。如果我使用

 [

下面是一个示例

table = data.frame(cnty=c(1,2,3), empcnt1=c(200,300,400), 
wage1=c(40,50,60),empcnt2=c(200,300,400),
wage2=c(40,50,60),empcnt3=c(200,300,400), wage3=c(40,50,60))

col.string <- c("empcnt1","wage1","empcnt2","wage2","empcnt3","wage3","cnty")
table1 <- table[col.string]

dplyr::select
table2 <- select(table,empcnt1,wage1,empdiff,empcnt2,wage2,empcnt3,wage3,cnty)
table2 <- select(table,empcnt1:wage3,cnty)

请注意,我无法利用我所拥有的事实

col.string

我有大约 50 列,因此在使用 dplyr:select 时尽量避免硬编码。

R 数据帧 DPLYR

评论

1赞 A5C1D2H2I1M1N2O1R2T1 4/27/2015
实际上,我不清楚你的问题是什么。您是否正在寻找如何在 ?如果是这样,您可能正在寻找类似 .selecttable %>% select_(.dots = col.string)

答:

4赞 A5C1D2H2I1M1N2O1R2T1 4/27/2015 #1

从它的声音来看,你想与参数一起使用:select_.dots

> table %>% select_(.dots = col.string)
  empcnt1 wage1 empcnt2 wage2 empcnt3 wage3 cnty
1     200    40     200    40     200    40    1
2     300    50     300    50     300    50    2
3     400    60     400    60     400    60    3

评论

0赞 rajvijay 4/27/2015
谢谢 - 是的,这就是我一直在寻找的。在 select 中传递字符串参数,并使用 .dots select_似乎已经成功了。
0赞 A5C1D2H2I1M1N2O1R2T1 4/27/2015
@rajvijay,OK cool。一开始很难错过(以下划线结尾的函数也是如此)。.dots