Это основная проблема в анализе данных, с которой Stata обращается за один шаг.
Создание широкого фрейма данных с неизменяющимися во времени данными (x0) и изменяющимися во времени данными за 2000 и 2005 годы (x1, x2)):
d1 <- data.frame(subject = c("id1", "id2"),
x0 = c("male", "female"),
x1_2000 = 1:2,
x1_2005 = 5:6,
x2_2000 = 1:2,
x2_2005 = 5:6
)
st
subject x0 x1_2000 x1_2005 x2_2000 x2_2005
1 id1 male 1 5 1 5
2 id2 female 2 6 2 6
Я хочу сформировать его как панель, чтобы данные выглядели так:
subject x0 time x1 x2
1 id1 male 2000 1 1
2 id2 female 2000 2 2
3 id1 male 2005 5 5
4 id2 female 2005 6 6
Я могу сделать это с помощью reshape
st
d2 <-reshape(d1,
idvar="subject",
varying=list(c("x1_2000","x1_2005"),
c("x2_2000","x2_2005")),
v.names=c("x1","x2"),
times = c(2000,2005),
direction = "long",
sep= "_")
Моя главная проблема в том, что когда у вас есть десятки переменных, приведенная выше команда становится очень длинной.В stata
можно просто набрать:
reshape long x1 x2, i(subject) j(year)
Есть ли такое простое решение в R?