根据另一个矩阵或数据框,在R中替换df/矩阵中的值

3
我有两个数据框,一个包含数字,另一个是二进制的,两者大小相同。现在,我想要替换数据框A中所有数字为NA,当且仅当数据框B中相应变量为0而不是1时。如果为1,则数字应保持不变。 如何操作?
数据框A:
   A  B  C
1  34 32 12
2  52 23 34

df B

   A  B  C
1  1  1  1
2  0  0  1

期望的结果

   A  B  C
1  34 32 12
2  na na 34
2个回答

9
如果您正在处理矩阵,那么只需简单地输入mat1[which(mat2 == 0)] <- NA即可。

啊,太好了。进入R的子集和索引方式需要花费出乎意料的长时间... - ShellfishGene
N.B: you don't need which - Cath

6

阅读文档后,我找到了答案。起初我认为replace命令只适用于向量,但是下面的方法可以解决问题:

new.df <- replace(A.df, B.df == 0, "NaN")

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接