首页 > 解决方案 > 如果重复多次,如何从另一个数据框中替换数据框中的多个值

问题描述

我有一个 A 矩阵的数据框,如下所示:

  V1 V2 V3
1  1  1  1
2  2  1  0
3  2  2  1
4  3  1  0
5  3  2  0
6  3  3  1

而且我还有一个交叉引用数据框,其中原始数据框ID和新数据框ID如下所示:

  ID newID
1 SE1     1
2  T3     2
3  R5     3
4  R7     4
5  R9     5
6 A11     6

我如何使用来获取这样的数据框(在创建新列ID1和之后ID2)?

  V1 V2 V3 ID1 ID2
1  1  1  1 SE1 SE1
2  2  1  0 T3  SE1
3  2  2  1 T3  T3
4  3  1  0 R5  SE1
5  3  2  0 R5  T3
6  3  3  1 R5  R5

标签: rdataframefor-loopreplacemerge

解决方案


我们可以使用inner_join两次:

library(dplyr)

df %>% 
    inner_join(df1, by=c("V1"="newID")) %>% 
    inner_join(df1, by=c("V2"="newID")) %>% 
    rename(ID1 = ID.x, ID2 = ID.y)

  V1 V2 V3 ID1 ID2
1  1  1  1 SE1 SE1
2  2  1  0  T3 SE1
3  2  2  1  T3  T3
4  3  1  0  R5 SE1
5  3  2  0  R5  T3
6  3  3  1  R5  R5

推荐阅读