按ID和R中的列名称合并

时间:2019-07-18 23:09:12

标签: r merge

我正在尝试使用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")

1 个答案:

答案 0 :(得分:2)

这里是dplyrtidyr::gather()的一种方式-

panel_full %>%
  left_join(gather(df, df_id, df_data, -id), by = c("id", "df_id"))