R 匹配列时在匹配中选择非NA值

R 匹配列时在匹配中选择非NA值,r,match,subset,col,R,Match,Subset,Col,我有两个data.frames、aa和bb: aa <- data.frame(ID = c(rep(letters[1:4]),"d","d", "e","e"), Name = c("Dave", "Charlie", "Ella", NA,"Timothy","James",NA, "Bob")) aa ID Name 1 a Dave 2 b Charlie 3 c Ella 4 d <NA> 5 d Timothy 6

我有两个
data.frame
s、
aa
bb

    aa <- data.frame(ID = c(rep(letters[1:4]),"d","d", "e","e"), Name = c("Dave", "Charlie", "Ella", NA,"Timothy","James",NA, "Bob"))
aa
  ID    Name
1  a    Dave
2  b Charlie
3  c    Ella
4  d    <NA>
5  d Timothy
6  d   James
7  e    <NA>
8  e     Bob

bb <- data.frame(ID = rep(letters[1:5]),Name = 0)

 bb
  ID Name
1  a    0
2  b    0
3  c    0
4  d    0

但是,如果我尝试创建aa的临时副本,可以吗

tmp <- aa[!is.na(aa$Name),]
tmp <- tmp[order(tmp$Name),]
bb$Name <- tmp[match(bb$ID,tmp$ID),2]
bb

tmp在
match
之前尝试
order
,即
aa1我意识到我的问题对于你给出的答案来说太简单了(谢谢你)。我做了相应的编辑。归根结底,就是不想永久性地想要更改编辑后的
aa
的顺序,为什么选择“James”而不是“Timothy”?在这个casse中,do
aa1
aa[order(-!is.na(aa$Name)),]
最终得到了na
bb

     ID    Name
1  a    Dave
2  b Charlie
3  c    Ella
4  d    <NA>
5  e    <NA>
tmp <- aa[!is.na(aa$Name),]
tmp <- tmp[order(tmp$Name),]
bb$Name <- tmp[match(bb$ID,tmp$ID),2]
bb