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)
Другие вопросы по тегам