9

我想包含暗示我应该对它们做什么的变量名。我想象一个数据框“调查”。

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 中做到这一点?

4

3 回答 3

16

您可以grep()使用colnames()

survey[,grep("bern", colnames(survey))]
于 2009-09-09T23:24:30.027 回答
3

如果您有一系列想要获取的名称,也可以使用 match。也许您经常需要变量“脉搏”、“运动”、“身高”、“体重”和“年龄”,但它们有时会出现在不同的地方或与其他附加变量一起出现。您可以保存常用名称的向量,然后将它们与数据框进行匹配,并按照您想要的顺序获得仅包含标准列的新 df。

basenames <- c("pulse", "exercise", "height", "weight", "age")
get.columns <- match(basenames, names(dataframe))
new.df <- dataframe[,get.columns]
于 2009-09-10T19:10:37.327 回答
2

"operators" 包允许一些类似 Perl 的语法:

library(operators)

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

或者

subset(survey, select = colnames(survey) %~% "bern")
于 2009-09-11T01:45:37.763 回答