根据第二个数据帧中的NA,将一个数据帧中的值转换为NA

时间:2017-12-11 17:19:22

标签: r dataframe

我确信有一种非常简单的方法可以完成这项任务,但我似乎无法弄明白。我有两个数据帧具有完全相同的数据,但来自两个不同的位置。

df1 <- data.frame(a=c(1,2,3,NA),b=c(1,5,4,6))
df2 <- data.frame(a=c(3,4,5,6),b=c(7,8,9,NA))

我想要的输出是两个有新版本的df1和df2完全相同,但底行只包含NA值。即如果一个数据帧中有NA值,我需要在另一个数据帧中的相应单元格上复制...

df1[4,2] <- NA
df2[4,1] <- NA

我从相反的角度看到了解决问题的非常相似的问题(例如Filling missing values in a data.frame from another data.frame),但我无法想象如何将其应用于我自己的数据。先感谢您。

2 个答案:

答案 0 :(得分:3)

我们可以根据两个数据集中任意一个出现PowerShell ps = PowerShell.Create(); ps.AddScript(“D:\PSScripts\MyScript.ps1”).Invoke(); 来创建一个索引并乘以

NA

答案 1 :(得分:3)

以下是一些可能性。 (1)似乎是最干净,最清晰的意图。 (3)有效,但在排除副作用方面似乎不必要地复杂。

1)替换尝试ini_set('memory_limit', '2048M');

replace

如果df1new <- replace(df1, is.na(df2), NA) df2new <- replace(df2, is.na(df1), NA) df1new替换为df2newdf1,这将继续有效,但会增加复杂性。在这种情况下,最好在之后分配df2df1(即df2)以避免复杂性。

2)索引它可以像这样写:

df1 <- df1new; df2 <-df2new

3)破坏性索引不确定这个是一个好主意,但它可以在这里工作:

df1new <- df1
df1new[is.na(df2)] <- NA

df2new <- df2
df2new[is.na(df1)] <- NA