将NA值从一个数据帧传输到另一个数据帧

时间:2014-07-18 04:12:46

标签: r

我有两个数据帧,df1和df2,一个是完整的,而另一个有一些NA值。例如:

df1 <- data.frame( id=c(1,2,NA,NA,5,NA), value=c(NA,10,50,30,NA,60))
df2 <- data.frame( id2=c(10,20,30,40,50,60), value2=c(15,25,35,45,55,65))

我想将NA值从df1转移到df2,以便df2为:

> df2
  id2 value2
1  10     NA
2  20     25
3  NA     35
4  NA     45
5  50     NA
6  NA     65

2 个答案:

答案 0 :(得分:1)

使用is.na()NA中找到df1的位置的一种可能性(TRUE表示缺少元素):

idx <- is.na(df1)

    idx
        id value
[1,] FALSE  TRUE
[2,] FALSE FALSE
[3,]  TRUE FALSE
[4,]  TRUE FALSE
[5,] FALSE  TRUE
[6,]  TRUE FALSE

然后我们可以使用idxdf2中的值替换为NA

df2[idx] <- NA

   df2
  id2 value2
1  10     NA
2  20     25
3  NA     35
4  NA     45
5  50     NA
6  NA     65

当然,此解决方案仅在df1df2的维度相似时才有效。

答案 1 :(得分:0)

以下代码提供所需的输出

df2$id2[is.na(df1$id)]<-NA
df2$value2[is.na(df1$value)]<-NA

这将查找第一个数据集中每列具有NA值的行,并将其替换为第二个数据集中的NA。