r - 使用 dplyr::select 排列列而不进行硬编码

标签 r dataframe dplyr

我正在加载 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 时尽量避免硬编码。

最佳答案

听上去,您希望将 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

关于r - 使用 dplyr::select 排列列而不进行硬编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29879991/

相关文章:

r - 当行的其余部分重复时,如何通过对一列的值求和来合并表

使用 dplyr 替换来自不同数据帧的多列

r - 通过给定变量查找条件的第一个匹配项

r - 减少条形图中 x 轴刻度(标签)的数量

r - 获取超过一级的所有因素的名称

javascript - Highcharter/Highmap : change legend label format for billions

python - 如何迭代数据框中的日期?

python - Pandas ,Numpy : How to Speed up row iteration with inner loop?

r - 如何在R中根据时间分配数据帧组

r - 选定的列到新行