Автоматизация вывода нескольких переменных из объекта - PullRequest
3 голосов
/ 14 сентября 2009

Вот моя ситуация. У меня есть объект, который я создал, используя read.spss.

> a <- read.spss(...)
> attach(a)

Теперь в этом объекте a это набор вопросов, которые я хотел бы вытащить, которые следуют за последовательностью номеров вопросов:

> q3 <- data.frame(q3_1, q3_2, q3_4, ... q3_27)

Есть ли способ автоматизировать его, чтобы он вытаскивал все вопросы, начиная с q3_, из исходного объекта в новый q3 data.frame?

Я пытался использовать функцию paste, но безрезультатно.

> q3 <- data.frame(paste("q3_",1:27,sep=""))

Это просто возвращает data.frame с вставленной последовательностью.

В идеале я хотел бы что-то, что вытягивает все из вопроса, начинающегося с qX_, так как некоторые значения отсутствуют или устарели.

Ответы [ 3 ]

5 голосов
/ 14 сентября 2009

Среди возможностей: grep, match и %in%. Вот решение с использованием grep:

R> foo <- data.frame(q1_1=1:4, q1_2=11:14, q2_1=21:24, q2_2=31:34, q3_1=41:44, q3_2=51:54)
R> colnames(foo)
[1] "q1_1" "q1_2" "q2_1" "q2_2" "q3_1" "q3_2"
R> grep("q3_", colnames(foo))
[1] 5 6
R> q3 <- foo[, grep("q3_", colnames(foo))]
R> q3
  q3_1 q3_2
1   41   51
2   42   52
3   43   53
4   44   54
R> 
2 голосов
/ 14 сентября 2009
q3 <- a[,grep("q3_",colnames(a))]
0 голосов
/ 14 сентября 2009

Я бы просто сделал что-то вроде:

q3 <- data.frame(a[paste('q3_',1:27,sep='')])

Вы все равно можете использовать attach(a), если хотите (и если в 'a' нет элемента с именем a '), но в этом нет необходимости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...