在R中创建多级面板数据集

时间:2016-03-28 12:49:53

标签: r

我想在R中创建一个面板数据集,我有宽格式的数据:

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

我想为混合级别建模创建一个新数据集,其中dvar和week的组合作为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
...

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

2 个答案:

答案 0 :(得分: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 :(得分: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"))