根据名称选择变量(简单正则表达式)

时间:2009-09-09 23:15:14

标签: r dataframe subset

我想加入变量名称,这意味着我应该对它们做些什么。我想象一个数据框“调查”。

library(Rlab) # Needed for rbern() function.
survey <- data.frame(cbind(  
id = seq(1:10),  
likert_this = sample(seq(1:7),10, replace=T),  
likert_that = sample(seq(1:7), 10, replace=T),  
dim_bern_varx = rbern(10, 0.6),  
disc_1 = sample(letters[1:5],10,replace=T)))

现在我想对包含 likert 的所有变量做一些事情,其他的变量包含 bern 等。

如何在R?

中完成

3 个答案:

答案 0 :(得分:15)

您可以将grep()colnames()

一起使用
survey[,grep("bern", colnames(survey))]

答案 1 :(得分:3)

如果你有一系列你喜欢的名字,你也可以使用匹配。也许你经常需要变量“脉冲”,“运动”,“身高”,“体重”和“年龄”,但它们有时会出现在不同的地方或其他增加的变量。您可以保存常用名称的向量,然后将它们与数据帧匹配,并按照您想要的顺序使用新标准列的df。

basenames <- c("pulse", "exercise", "height", "weight", "age")
get.columns <- match(basenames, names(dataframe))
new.df <- dataframe[,get.columns]

答案 2 :(得分:2)

“运算符”包允许一些类似Perl的语法:

library(operators)

survey[, colnames(survey) %~% "bern"]

subset(survey, select = colnames(survey) %~% "bern")