我想在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
...
我知道我必须使用熔化和铸造的一些组合,但我不确定。
答案 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"))