首页 > 解决方案 > R:根据另一个数据集中的几个变量填写一个新列

问题描述

我有一个包含 4 列(ID、Year、X 和 Y)的第一个数据框

Id Year    X     Y
1  2017  20_24
1  2016  45_49
2  2017  30_34
2  2014  20_24
4  2014  14_19
4  2015  20_24

我想使用另一个数据集填写 Y 列。第二个数据集得到相同的变量 ID 和年份,其他列是第一个数据集中 X 列的项目。

Id Year    14_19   20_24   30_34  45_49
1  2017     123    122     5555    4444
1  2016     456    543     8888    333
1  2015     5644   0908    0987    5456
1  2014     5642   767     233     323
2  2017     123    123     5666    989
2  2016     456    876     55      45
2  2015     786    789     324     77
2  2014     633    543     334     34
3  2017     123    123     321     44
3  2016     456    345     45645   23
3  2015     876    4556    6554    23

因此,当 X 变量的 ID、年份和项目与第二个数据集的列匹配时,我希望填写 Y。这怎么可能?谢谢 !

标签: rloopsmatch

解决方案


试试这个dplyrtidyr解决方案:

library(dplyr)
library(tidyr)

result <- df2 %>%
  gather("X", "Y", -c("ID", "Year")) %>%
  right_join(df1, by = c("ID", "Year", "X"))

或使用pivot_longer()

result <- df2 %>%
  pivot_longer(cols = 3:4,
               names_to = "X",
               values_to = "Y") %>%
  right_join(df1, by = c("ID", "Year", "X"))

推荐阅读