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中,doaa1aa[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