Изменение формы фрейма данных от широкого к панельному с несколькими переменными и некоторым временным инвариантом

Это основная проблема анализа данных, которую 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= "_")

My main Проблема в том, что когда у вас есть десятки переменных, указанная выше команда становится очень длинной. В stata можно просто ввести:

reshape long x1 x2, i(subject) j(year)

Есть ли такое простое решение в R?

8
задан Metrics 25 August 2013 в 17:06
поделиться