我使用以下代码创建了一个数据框:
manager <- c(1,2,3,4,5)
date <- c("10/24/08","10/28/08","10/1/08","10/12/08","5/1/09")
country <- c("US","US","UK","UK","UK")
gender <- c("M","F","F","M","F")
age <- c(32,45,25,39,99)
q1 <- c(5,3,3,3,2)
q2 <- c(4,5,5,3,2)
q3 <- c(5,2,5,3,2)
q4 <- c(5,5,5,NA,2)
q5 <- c(5,5,2,NA,1)
leadership <- data.frame(manager,date,country,gender,age,
q1,q2,q3,q4,q5, stringsAsFactors = FALSE)
然后我使用以下内容查询:View(leadership[c(1:3),c("q1","q2","q3","q4","q5")])
我的问题如下:有没有办法为列设置有序结构,这样我就可以使用以下代码进行查询?
View(leadership[c(1:3),c("q1":"q5")])
提前致谢。
答案 0 :(得分:1)
或者,在基数R中,在列名称上附加grep()
的列表:
leadership[append(1:3, grep("^q.*$", names(leadership)))]
# manager date country q1 q2 q3 q4 q5
# 1 1 10/24/08 US 5 4 5 5 5
# 2 2 10/28/08 US 3 5 2 5 5
# 3 3 10/1/08 UK 3 5 5 5 2
# 4 4 10/12/08 UK 3 3 3 NA NA
# 5 5 5/1/09 UK 2 2 2 2 1
如果只是q的一部分在正则表达式搜索中传递:
leadership[append(1:3, grep("^q[1-3].*$", names(leadership)))]
# manager date country q1 q2 q3
# 1 1 10/24/08 US 5 4 5
# 2 2 10/28/08 US 3 5 2
# 3 3 10/1/08 UK 3 5 5
# 4 4 10/12/08 UK 3 3 3
# 5 5 5/1/09 UK 2 2 2
leadership[append(1:3, grep("^q[4-5].*$", names(leadership)))]
# manager date country q4 q5
# 1 1 10/24/08 US 5 5
# 2 2 10/28/08 US 5 5
# 3 3 10/1/08 UK 5 2
# 4 4 10/12/08 UK NA NA
# 5 5 5/1/09 UK 2 1
答案 1 :(得分:0)
dplyr::select
允许您提出的非标准语法。
library(dplyr)
View(select(leadership[1:3, ], q1:q5))
有关详细信息,请参阅?select
。您也可以select(leadership, starts_with("q"))