我有两个数据帧,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
答案 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
然后我们可以使用idx
将df2
中的值替换为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
当然,此解决方案仅在df1
和df2
的维度相似时才有效。
答案 1 :(得分:0)
以下代码提供所需的输出
df2$id2[is.na(df1$id)]<-NA
df2$value2[is.na(df1$value)]<-NA
这将查找第一个数据集中每列具有NA值的行,并将其替换为第二个数据集中的NA。