В SPSS (относительно) легко создать кросс-вкладку с несколькими переменными с помощью факторов (или значения) как заголовок таблицы. Так, что-то как следующее (составил данные, и т.д.). Q1, Q2 и Q3 у каждого есть или 1, 2 или 3 для каждого человека. Я просто оставил их как числа, но они могли быть факторами, ни один, казалось, не помог решить проблему.
1 (very Often) 2 (Rarely) 3 (Never) Q1. Likes it 12 15 13 Q2. Recommends it 22 11 10 Q3. Used it 22 12 9
В SPSS можно даже запросить строку, колонну или общие проценты.
Я попробовал таблицу (), ftable (), xtab (), CrossTable () от gmodels и CrossTable () от descr, и ни один из них не может обработать (afaik) несколько переменных; они главным образом, кажется, обрабатывают 1 переменную, пересеченную с другой переменной, и 3-е создает слои.
Существует ли пакет с некоторыми хорошими перекрестными примерами переключения вкладок/таблицы, которые я мог использовать для понимания этого? Я уверен, что пропускаю что-то простое, таким образом, я ценю Вас указывающий, что я пропустил. Возможно, я должен генерировать каждую строку как отдельный список и затем сделать кадр данных и распечатать кадр данных?
ОБНОВЛЕНИЕ: я теперь обнаружил ctab () в пакете catspec, который является также на правильном пути. Интересно, что R не имеет никакого последовательного эквивалента Ctables в SPSS, который является в основном крылом инструмента "переключения вкладок" старые плоские инструменты, используемые для исследования обзора. ctab () пробует и является замечательным 1-м шагом..., но Вы все еще не можете сделать эту таблицу (выше) с ним.
, просто проверьте пакет изменения формы Хэдли Уикхема .
AFAIS, вам понадобится функция cast
из пакета.
Вы можете использовать пользовательскую функцию для использования rbind ()
в нескольких таблицах, примерно так:
multitab <- function(...){
tabs<-list(...)
tablist<-lapply(tabs,table)
bigtab<-t(sapply(tablist,rbind))
bigtab }
В пакете Hmisc
есть функция summary.formula
, которая может делать что-то в соответствии с вашими пожеланиями. Он очень гибкий, поэтому посмотрите примеры на странице справки, но вот приложение к вашей проблеме:
library(Hmisc)
dd <- data.frame(Q1=sample(1:3, 20, replace=T), Q2=sample(1:3, 20, replace=T),
Q3=sample(1:3, 20, replace=T)) #fake data
summary(~Q1+Q2+Q3, data=dd, fun=table)
Это дает следующий результат:
Descriptive Statistics (N=20)
+------+-------+
| | |
+------+-------+
|Q1 : 1|25% (5)|
+------+-------+
| 2 |45% (9)|
+------+-------+
| 3 |30% (6)|
+------+-------+
|Q2 : 1|30% (6)|
+------+-------+
| 2 |35% (7)|
+------+-------+
| 3 |35% (7)|
+------+-------+
|Q3 : 1|35% (7)|
+------+-------+
| 2 |30% (6)|
+------+-------+
| 3 |35% (7)|
+------+-------+
Возможные значения приведены в строках, потому что он имеет гибкость различных наборы значений для разных переменных. Вы можете поиграть с параметрами функции (например, method
и fun
), чтобы получить другое направление.
Модификация предыдущего примера
library(Hmisc)
library(plyr)
dd <- data.frame(q1=sample(1:3, 20, replace=T),
q2=sample(1:3, 20, replace=T),
q3=sample(1:3, 20, replace=T)) #fake data
cross <- ldply(describe(dd), function(x) x$values[1,])[-1]
rownames(cross) <- c("Q1. Likes it","Q2. Recommends it","Q3. Used it")
names(cross) <- c("1 (very Often)","2 (Rarely)","3 (Never)")
Теперь кросс выглядит так
> cross
1 (very Often) 2 (Rarely) 3 (Never)
Q1. Likes it 4 10 6
Q2. Recommends it 7 9 4
Q3. Used it 6 4 10
xtabs
имеет интерфейс формулы, который может потребовать некоторой практики, чтобы привыкаешь, но это можно сделать. Если у вас есть данные в фрейме данных df
и ваши переменные называются ques
и или
, вы можете использовать:
xtabs(~ques+resp,data=df)
Например:
> t1 <- rep(c("A","B","C"),5)
> t2 <- rpois(15,4)
> df <- data.frame(ques=t1,resp=t2)
> xtabs(~ques+resp,data=df)
resp
names 2 3 4 5 6 7 9
A 1 0 2 1 0 0 1
B 1 0 0 2 1 1 0
C 1 2 0 1 0 1 0