我正在尝试使用id和列名作为索引将两个数据集合并为一个。
我有以下数据
df <-
a b c d e f g id
1 1 1 1 1 1 1 1
2 2 2 2 2 2 2 2
3 3 3 3 3 3 3 3
4 4 4 4 4 4 4 4
panel_empty <-
id df_id df_data df1_data df2_data df3_data
1 a
1 b
1 c
1 d
1 e
1 f
1 g
2 a
2 b
2 c
2 d
2 e
2 f
2 g
3 a
3 b
3 c
3 d
3 e
3 f
3 g
4 a
4 b
4 c
4 d
4 e
4 f
4 g
我想以某种方式将它们合并成这样
panel_full <-
id df_id df_data df2_data df3_data
1 a 1
1 b 1
1 c 1
1 d 1
1 e 1
1 f 1
1 g 1
2 a 2
2 b 2
2 c 2
2 d 2
2 e 2
2 f 2
2 g 2
3 a 3
3 b 3
3 c 3
3 d 3
3 e 3
3 f 3
3 g 3
4 a 4
4 b 4
4 c 4
4 d 4
4 e 4
4 f 4
4 g 4
我只知道如何按ID合并,但不知道如何按ID和列名进行合并。对于面板数据,这是非常重要的事情,令我惊讶的是,在该站点上没有发现任何类似的问题。
编辑:
到目前为止,我已经能够从宽到长
long <- melt(df, id.vars = c("id"))
但是,我不知道继续前进。
我尝试过
m1 <- merge(panel_emtpy, long, by.x = "id", by.y = "df_id")
答案 0 :(得分:2)
这里是dplyr
和tidyr::gather()
的一种方式-
panel_full %>%
left_join(gather(df, df_id, df_data, -id), by = c("id", "df_id"))