2009-09-09 11 views
8

Me gustaría incorporar nombres de variables que impliquen lo que debería hacer con ellos. Me imagino una "encuesta" de marco de datos.Elija variables basadas en el nombre (expresión regular 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))) 

Ahora me gustaría hacer ciertas cosas con todas las variables que contienen Likert, otras cosas con las variables que contienen berna etc.

¿Cómo se puede hacer esto en R?

Respuesta

15

Puede utilizar grep() con colnames():

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

Si usted tiene una serie de nombres que le gusta agarrar también se puede usar partido. quizás a menudo necesite variables como "pulso", "ejercicio", "altura", "peso" y "edad", pero a veces aparecen en diferentes lugares o con otras variables añadidas. Puede guardar el vector de nombres comunes, luego compararlos con el marco de datos y tener un nuevo df de solo sus columnas estándar en el orden que desee.

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

El paquete de "operadores" permite una sintaxis similar a Perl:

library(operators) 

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

o

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