2009-09-09 10 views
8

Je voudrais incorporer des noms de variables qui impliquent ce que je devrais faire avec eux. J'imagine un "survey" de dataframe.Choisir les variables en fonction du nom (expression régulière simple)

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))) 

Maintenant, je voudrais faire certaines choses avec toutes les variables qui contiennent Likert, d'autres choses avec des variables qui contiennent bern etc.

Comment cela peut-il être fait en R?

Répondre

15

Vous pouvez utiliser grep() avec colnames():

survey[,grep("bern", colnames(survey))] 
3

Si vous avez une série de noms que vous aimez pour vous saisir pouvez également utiliser correspondance. peut-être avez-vous souvent besoin de variables "pouls", "exercice", "taille", "poids" et "âge", mais elles apparaissent parfois à différents endroits ou avec d'autres variables ajoutées. Vous pouvez enregistrer le vecteur des noms communs, puis les mettre en correspondance avec la base de données et avoir une nouvelle base de données de vos colonnes standard dans l'ordre souhaité.

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

Le paquet "opérateurs" permet une syntaxe Perl comme:

library(operators) 

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

ou

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