合并两个数据框并替换R中的NA值

Eri*_*ang 5 merge r dataframe

我有一个主表(a),包含列:id、age 和sex。例如。

a <- data.frame(id=letters[1:4], age=c(18,NA,9,NA), sex=c("M","F","F","M"))
  id age sex
1  a  18   M
2  b  NA   F
3  c   9   F
4  d  NA   M
Run Code Online (Sandbox Code Playgroud)

我有一个补充表(b),只包含表(a)中的所有缺失数据或表(a)中的重复数据。例如。

b <- data.frame(id=c("a","b","d"), age=c(18,32,20))
  id age
1  a  18
2  b  32
3  d  20
Run Code Online (Sandbox Code Playgroud)

现在我想合并这两个表,如下所示:

  id age sex
1  a  18   M
2  b  32   F
3  c   9   F
4  d  20   M
Run Code Online (Sandbox Code Playgroud)

不过,我试过了merge(a,b,by="id",all=T)。结果不是我想要的。有没有办法解决这个问题?谢谢!

akr*_*run 4

我们可以用data.table

library(data.table)
setDT(a)[b, agei := i.age, on='id'][is.na(age), age := agei][,agei:= NULL][]
a
 #  id age sex
#1:  a  18   M
#2:  b  32   F
#3:  c   9   F
#4:  d  20   M
Run Code Online (Sandbox Code Playgroud)