Более быстрые способы вычисления частот и перехода от длинного к широкому

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

Пример того, что я пробовал до сих пор (пробовал множество других вещей, включая добавление фиктивной переменной = 1, а затем fun.aggregate = sum вместо этого):

library(plyr)
ddply(data, .(id), dcast, id ~ week, value_var = "id", 
        fun.aggregate = length, fill = 0, .parallel = TRUE)

Однако я должно быть что-то не так, потому что эта функция не завершается. Есть ли лучший способ сделать это?

Вход:

id      week
1       1
1       2
1       3
1       1
2       3

Выход:

  1  2  3
1 2  1  1
2 0  0  1
8
задан Henrik 6 October 2018 в 10:11
поделиться