R - панель данных от полной формы до трехмерного массива формы персона х время х особенность
Я пытаюсь найти простой способ в R взять набор данных с полями person_id, date и нескольких переменных (скажем, 20 с именем x1, x2...x20) и преобразовать его в 3-мерный массив (m от n до p) где m - количество людей, n - количество дискретных периодов времени, а p - количество переменных.
Текущие данные отображаются как:
m1 n1 x1 x2 x3 ... x20
m1 n2 x1 x2 x3 ... x20
m1 nN . . . ... .
m2 n1 x1 x2 x3 ... x20
. . . . . ... .
. . . . . ... .
mM nN x1 x2 x3 x4 ... x2
В конце я хотел бы, чтобы это выглядело следующим образом:
[, , 1]
[, 1, ] [, 2, ] [, 3, ][, ..., ][, n, ]
[1, , ]
[2, , ]
[3 , ,]
[... , ,]
[m, , ]
[, , 2]
[, , 3]
[, , ...]
[, , p]
Для простоты предположим, что временные ряды хорошо выровнены (у каждого m ровно столько же n).
Спасибо!
1 ответ
Решение
Используйте reshape2:
library(reshape2)
# You probably need to melt your data first
dataset.m <- melt(dataset, id.vars = c("m", "n"))
acast(dataset.m, m ~ n ~ variable)