2016-04-10 4 views
0

Мне нужно проанализировать данные съемки, чтобы получить частоту переменной нескольких вопросов. Я использую this R packageОбработка данных нескольких выборочных данных в R

Я понимаю, что мне нужно использовать функцию «multi.split», чтобы создать переменную, с которой я буду работать. но мне нужно знать, как я могу ссылаться на ответы, которые не входят в набор данных, то есть ответы, которые были частью исходного вопроса, но не были выбраны во время опроса, и поэтому должны отображаться со значением 0.

Пример: у меня есть следующие проходимых ответы:

"red", "blue", "green" and "yellow" 

и мои данные (как в приведенном выше примере):

v <- c("red/blue","green","red/green","blue/red") 

когда я запускаю эту команду:

multi.table(multi.split(v)) 

я получаю следующий результат:

 n  %multi 
v.blue 2  50 
v.red 3  75 
v.green 2  50 

, но я хотел бы получить:

  n  %multi 
v.blue 2  50 
v.red 3  75 
v.green 2  50 
v.yellow 0  0 

любые идеи о том, как я могу это сделать?

+0

Если вы еще не пробовали это, пакет 'memisc' имеет полезные инструменты для анализа опроса. –

ответ

0

Я никогда раньше не использовал этот пакет, но я попробую его.

Функция multi-split() производит data.frame, так что если вы хотите добавить еще один столбец, перед тем, как статистические данные, которые могли бы сделать что-то вроде следующего:

v <- c("red/blue","green","red/green","blue/red") 
a <- multi.split(v) 
a$v.yellow <- 0 
multi.table(a) 


## > multi.table(a) 
## n %multi 
## v.blue 2  50 
## v.red 3  75 
## v.green 2  50 
## v.yellow 0  0 

Update Более общая версия будет идти-то как это.

1. wanted.data - это символ имен столбцов, который вы всегда хотите в своем выходе. 2. col.to.add - это столбцы, отсутствующие в файле данных a. 3. Затем присвойте 0 столбцам, которые не присутствовали. 4. Наконец закажите столбцы, чтобы мы всегда имели их в том же порядке.

library(questionr) 
v <- c("red/blue","green","red/green","blue/red") 
wanted_data <- c("v.red","v.blue","v.green","v.yellow") 

a <- multi.split(v) 
col.to.add<- wanted_data[!(wanted_data%in% colnames(a))] 
a[col.to.add] <- 0 
a[,order(colnames(a))] 
multi.table(a) 

## > multi.table(a) 
## n %multi 
## v.blue 2  50 
## v.red 3  75 
## v.green 2  50 
## v.yellow 0  0 
+0

Есть ли способ сделать его более общим? Мне нужно сохранить упорядочение ярлыков, так что, если мои ярлыки: «красный», «синий», «зеленый» и «желтый» , столбцы в таблице будут (всегда): красный, синий, зеленый и желтый без реорганизация того, как был заказан этот набор данных или какие метки были частью набора данных или нет. спасибо –

+0

@Shlomi Я также не использовал этот пакет, но похоже, что вы хотите упорядоченный фактор. Введите '? Factor' для получения дополнительной информации об этом. – Frank

+0

@djj Спасибо за пример, что должен установить порядок столбцов, потому что я вижу, что в «wanted_data» порядок: «красный», «синий», «зеленый» и «желтый», а в напечатанном результате - порядок это: «синий», «красный», «зеленый» и «желтый» –

Смежные вопросы