根据另一个数据帧更改数据帧中的数字

时间:2020-11-06 09:35:09

标签: r dataframe

让我们考虑两个数据帧。一个仅包含零和一,第二个包含一些随机数据。当同一位置(在同一行和同一列)的第一个数据帧中有1个时,我想在第二个数据帧中设置NA;如果为0,则不执行任何操作。

#Example
set.seed(20)
df1=data.frame(sample(0:1,3,replace=T),sample(0:1,3,replace=T),sample(0:1,3,replace=T))
df2=data.frame(rnorm(3),runif(3),rexp(3))
df1 
1 1 1 
0 1 0
0 0 1
df2 
        rnorm.3.  runif.3.   rexp.3.
1 -0.3316559 0.4520996 0.8501966
2  0.6992316 0.3221473 0.6389130
3  0.6520083 0.1090714 0.7141194
#My goal is to have 
df3 
NA                   NA             NA
0.6992316            NA             0.6389130
0.6520083            0.1090714      NA

您知道该怎么做吗?我试图做这样的事情-从第一个数据帧获取所有坐标。然后说第二个数据帧应具有相同坐标的NA。但是我不确定如何提取这些坐标并在另一个数据框中引用它。有没有更简单的解决方案?

1 个答案:

答案 0 :(得分:1)

您要在df1 == 1的df2中添加NA而不是1。

 set.seed(20)
> df1=data.frame(sample(0:1,3,replace=T),sample(0:1,3,replace=T),sample(0:1,3,replace=T))
> df2=data.frame(rnorm(3),runif(3),rexp(3))
> df2[df1==1] <- NA
> df2
   rnorm.3.  runif.3.  rexp.3.
1        NA        NA       NA
2 0.6992316        NA 0.638913
3 0.6520083 0.1090714       NA