我想匹配一个表中的列与另一个表,并替换这些匹配的值

时间:2017-10-03 06:51:15

标签: r

我有一张桌子说,表A:

uid pid code
1     1  aaa
2     1  ccc
3     4  ddd 
4     2  eee

我有另一张桌子,表B:

pid msg
1   good
2   inspiring
3   thing to wtch
4   terrible

现在,我想用表B中的msg替换表A中的pid。

我使用了merge(tableA, tableb, by =c("pid"))

我的结果是

uid pid code msg
1    1  aaa  good
2    1  ccc  good
3    4  ddd  terrible
4    2  eee  inspiring

我希望结果为

uid msg code
1   good aaa
2   good ccc
3   terrible ddd
4   inspiring eee

2 个答案:

答案 0 :(得分:2)

您的方法似乎绝对正确,只需要进一步的步骤:

  1. 选择所需列
  2. 重新排序
  3. 使用tidyverse函数,您可以执行以下操作:

    TableA %>%
      left_join(TableB) %>%
      select(uid, msg, code)
    

    给出:

      uid       msg code
    1   1      good  aaa
    2   2      good  ccc
    3   3  terrible  ddd
    4   4 inspiring  eee
    

答案 1 :(得分:0)

Base R解决方案:

newtable = merge(tableA,tableB,by = "pid")
newtable$pid = NULL
newtable = newtable[order(newtable$uid,decreasing=FALSE),c(1,3,2)]