用另一个具有相同列R的df替换一列中的某些值

时间:2019-07-23 11:41:37

标签: r dataframe vector merge

我想根据NA df中的id列值迅速替换first df中的x0 df向量second中的x0值合并和删除列。换句话说,first <- data.frame(x0=1:5, x3=90:94, id=c("a1","a2","a3",NA,NA))` 是公用记录标识符。下面是一个简单的示例:

  x0 x3   id
1  1 90   a1
2  2 91   a2
3  3 92   a3
4  4 93 <NA>
5  5 94 <NA>`
second <- data.frame(x0=4:8,
                     x2=seq(104,108,1),
                     id=c("a4","a5","a6","a7","a8"))`
  x0  x2 id
1  4 104 a4
2  5 105 a5
3  6 106 a6
4  7 107 a7
5  8 108 a8`
  x0 x3 id
1  1 90 a1
2  2 91 a2
3  3 92 a3
4  4 93 a4
5  5 94 a5`

预期结果将是:

pm2 restart 1

1 个答案:

答案 0 :(得分:1)

您正在寻找一个 update-join 或一个 gap-fill-join ,可以这样做:

first$id  <- as.character(first$id)
second$id  <- as.character(second$id)

idx <- match(first$x0, second$x0) #Update join
idxn <- which(!is.na(idx))
first$id[idxn]  <- second$id[idx[idxn]]
first
#  x0 x3 id
#1  1 90 a1
#2  2 91 a2
#3  3 92 a3
#4  4 93 a4
#5  5 94 a5