Elegir variables basadas en nombre (expresión regular simple)
Pregunta
Me gustaría incorporar nombres de variables que impliquen lo que debo hacer con ellos. Me imagino un marco de datos " encuesta " ;.
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 variables que contienen bern etc.
¿Cómo se puede hacer esto en R?
Solución
Puedes usar grep ()
con colnames ()
:
survey[,grep("bern", colnames(survey))]
Otros consejos
Si tienes una serie de nombres que te gusta agarrar, también puedes usar coincidir. quizás a menudo necesite las variables "pulso", "ejercicio", "altura", " peso " y "edad", pero a veces aparecen en diferentes lugares o con otras variables agregadas. Puede guardar el vector de nombres comunes y 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]
Los " operadores " El paquete permite alguna sintaxis similar a Perl:
library(operators)
survey[, colnames(survey) %~% "bern"]
o
subset(survey, select = colnames(survey) %~% "bern")