2009-09-09 51 views
8

我想包含變量名稱,暗示我應該對他們做什麼。我想象一個數據框「調查」。根據名稱選擇變量(簡單正則表達式)

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

現在我想去做某些事情用含有李克特所有變量,其他的事情與包含變量伯爾尼

這又如何在R上做了什麼?

回答

15

您可以使用grep()colnames()

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

如果您有一系列你喜歡搶你也可以用匹配的名字。也許你經常需要變量「脈搏」,「運動」,「身高」,「體重」和「年齡」,但他們有時會出現在不同的地方或其他變量。您可以保存常用名稱的矢量,然後將它們與數據框相匹配,然後按照所需順序爲標準列創建一個新的df。

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

的 「運算符」 包允許一些類似Perl的語法:

library(operators) 

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

subset(survey, select = colnames(survey) %~% "bern") 
相關問題