2016-03-28 73 views
2

多层次的面板数据我想创建R A面板数据,我在宽格式的数据:创建R中

week dvar1 dvar2 ivar1 ivar2 
12 7  9  220 500 
13 4  5  200 400 
... 

我想创建一个混合级建模新的数据集,其中DVAR和星期的组合作为id值即

week dvar value ivar1 ivar2 
12 dvar1 7  220 500 
13 dvar1 4  200 400 
12 dvar2 9  220 500 
13 dvar2 5  200 400 
... 

我知道我必须使用一些熔融和铸造的组合,但我不知道。

回答

1

我们可以使用melt

library(data.table) 
melt(setDT(df1), measure=patterns("^dvar"), variable.name="dvar") 
# week ivar1 ivar2 dvar value1 
#1: 12 220 500 dvar1  7 
#2: 13 200 400 dvar1  4 
#3: 12 220 500 dvar2  9 
#4: 13 200 400 dvar2  5 
1

使用tidyr包:

library(tidyr) 

df %>% 
    gather(key = dvar, value = value, -c(week, ivar1, ivar2)) 

# week ivar1 ivar2 dvar value 
# 1 12 220 500 dvar1  7 
# 2 13 200 400 dvar1  4 
# 3 12 220 500 dvar2  9 
# 4 13 200 400 dvar2  5 

备选:

df %>% 
    gather(key = dvar, value = value, starts_with("dvar"))