比较两个数据帧的值并替换它们

时间:2017-04-06 10:54:58

标签: r dataframe

我有两个具有相同行数和列数的数据框,113x159具有以下结构:

DF1:

   1  2  3  4
a AT AA AG CT
b NA AG AT CC
c AG GG GT AA
d NA NA TT TC

DF2:

   1  2  3  4
a NA 23 12 NA
b NA 23 44 12
c 11 14 27 55
d NA NA 12 34

我想将值与值db1 e db2进行比较,如果db 2的值为NA且db1的值不是,则替换它(如果db1值为NA且db2中没有,则替换它)。 最后,我的df必须是这样的:

   1  2  3  4
a NA AA AG NA
b NA AG AT CC
c AG GG GT AA
d NA NA TT CC

我已经写了这个if循环,但它不起作用:

merge.na<-function(x){
for (i in df2) AND (k in df1){
    if (i==NA) AND (k!=NA)
    k==NA}

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我们可以使用replace

replace(df1, is.na(df2), NA)
#   X1   X2 X3   X4
#a <NA>   AA AG <NA>
#b <NA>   AG AT   CC
#c   AG   GG GT   AA
#d <NA> <NA> TT   TC