使用 dplyr::select 排列列而不进行硬编码
arranging columns using dplyr::select without hardcoding
我正在加载一个 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
我正在加载一个 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