让我们考虑两个数据帧。一个仅包含零和一,第二个包含一些随机数据。当同一位置(在同一行和同一列)的第一个数据帧中有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。但是我不确定如何提取这些坐标并在另一个数据框中引用它。有没有更简单的解决方案?
答案 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