2009-09-09 17 views
8

Vorrei incorporare nomi di variabili che implicano ciò che dovrei fare con loro. Immagino un "sondaggio" di dataframe.Scegliere le variabili in base al nome (espressione regolare semplice)

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

Ora vorrei fare certe cose con tutte le variabili che contengono Likert, l'altro con le variabili che contengono bern ecc

Come può essere fatto in R?

risposta

15

È possibile utilizzare grep() con colnames():

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

Se si dispone di una serie di nomi che ti piace per afferrare è anche possibile utilizzare partita. forse hai spesso bisogno di variabili "impulso", "esercizio", "altezza", "peso" ed "età", ma a volte appaiono in luoghi diversi o con altre variabili aggiunte. Puoi salvare il vettore di nomi comuni, quindi confrontarli con il dataframe e avere un nuovo df di solo le colonne standard nell'ordine desiderato.

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

Il pacchetto "operatori" permette una sintassi Perl-like:

library(operators) 

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

o

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