Я пытаюсь создать таблицу 4-сторонних непредвиденных ситуаций из своего набора данных. Мой набор данных выглядит следующим образом:Таблицы непредвиденных обстоятельств из столбцов data.frame
a <- c(1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1)
b <- c(1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1)
group1 <- sample(letters[25:26], 12, replace = T)
group2 <- sample(letters[7:10], 12, replace = T)
df <- data.frame(a, b, group1, group2)
Я попытался с aggregate
функции. Все в порядке при создании 3-полосного непредвиденного стола
aggregate(cbind(a, b) ~ group1, data = df, FUN = table)
group1 a.0 a.1 b.0 b.1
1 y 3 4 3 4
2 z 2 3 2 3
Однако при добавлении второй переменной группировки, выход сбивает с толком, и не требуется.
aggregate(. ~ group1 + group2, data = df, FUN = table)
group1 group2 a b
1 y g 3 3
2 z g 1 1
3 z h 1 1
4 y i 1 1
5 z i 1 1
6 y j 2, 1 3
7 z j 1, 1 1, 1
Поскольку мой исходный набор данных довольно большой, я был бы признателен за хороший элегантный и автоматический подход, чтобы справиться с этим. T
Отлично, спасибо за быстрый ответ! Теперь я вижу, что 'aggregate' только не печатает нули, которые меня путают. Хотя 'melt/dcast' и' recast' работают хорошо, есть ли способ сделать 'aggregate', чтобы дать также нули? – Adela
@Adela Обновлено сообщение. – akrun
Отлично, ну последний вопрос. Я заметил, что в 'do.call' нет значений для комбинаций' z-h' и 'y-i' групп (нет ничего удивительного). Можно ли также печатать нулевые значения для них? Или мне нужно положить их сюда вручную? – Adela