2009-09-09 15 views
8

Ich möchte Variablennamen einbeziehen, die implizieren, was ich mit ihnen machen soll. Ich stelle mir einen Datenrahmen "Umfrage" vor.Wählen Sie Variablen basierend auf dem Namen (einfacher regulärer Ausdruck)

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

Nun möchte Ich mag bestimmte Dinge mit allen Variablen zu tun, die enthalten likert, andere Dinge mit Variablen, die bern usw.

enthalten Wie kann dies in R getan werden?

Antwort

15

Sie können grep() mit colnames() verwenden:

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

Wenn Sie eine Reihe von Namen haben Sie auch greifen gerne Spiel verwenden können. Vielleicht brauchen Sie oft die Variablen "Puls", "Übung", "Höhe", "Gewicht" und "Alter", aber sie erscheinen manchmal an verschiedenen Stellen oder mit anderen hinzugefügten Variablen. Sie können den Vektor der gebräuchlichen Namen speichern und sie dann mit dem Datenrahmen abgleichen und einen neuen df nur Ihrer Standardspalten in der von Ihnen gewünschten Reihenfolge erhalten.

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

Die "Operatoren" Paket ermöglicht es einige Perl-ähnliche Syntax:

library(operators) 

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

oder

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