2009-09-09 34 views
8

Tôi muốn kết hợp các tên biến có nghĩa là tôi nên làm gì với chúng. Tôi tưởng tượng một "khung khảo sát" dataframe.Chọn các biến dựa trên tên (biểu thức chính quy đơn giản)

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

Bây giờ tôi muốn làm một số việc với tất cả các biến có chứa Likert, những thứ khác với các biến có chứa bern, vv

Làm thế nào điều này có thể được thực hiện trong R?

Trả lời

15

Bạn có thể sử dụng grep() với colnames():

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

Nếu bạn có một loạt các tên mà bạn muốn lấy bạn cũng có thể sử dụng kết hợp. có lẽ bạn thường cần biến "xung", "tập thể dục", "chiều cao", "cân nặng" và "tuổi", nhưng đôi khi chúng hiển thị ở những nơi khác nhau hoặc với các biến được thêm khác. Bạn có thể lưu vectơ của các tên phổ biến rồi đối chiếu chúng với khung dữ liệu và có một df mới chỉ là các cột chuẩn của bạn theo thứ tự bạn muốn.

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

Các "khai thác" gói cho phép một số cú pháp Perl giống như:

library(operators) 

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

hoặc

subset(survey, select = colnames(survey) %~% "bern") 
Các vấn đề liên quan