2009-09-09 26 views
8

Chciałbym wprowadzić nazwy zmiennych, które implikują, co powinienem z nimi zrobić. Wyobrażam sobie ankietę danych "ankietę".Wybierz zmienne na podstawie nazwy (proste wyrażenie regularne)

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

Teraz chciałbym zrobić pewne rzeczy ze wszystkich zmiennych, które zawierają Likerta inne rzeczy ze zmiennymi, które zawierają Berno itp

Jak można to zrobić w R?

Odpowiedz

15

Można użyć grep() z colnames():

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

Jeśli masz szereg nazwisk które chcesz pobrać można również użyć mecz. Być może często potrzebujesz zmiennych "puls", "ćwiczenie", "wzrost", "waga" i "wiek", ale czasami pojawiają się w różnych miejscach lub z innymi dodanymi zmiennymi. Możesz zapisać wektor pospolitych nazw, a następnie dopasować je do ramki danych i mieć nowy df tylko standardowych kolumn w żądanej kolejności.

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

pakiecie "operatorów" Perl pozwala jakąś podobną składnię:

library(operators) 

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

lub

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