如何根据R中的二进制数将某些值设置为NA?

时间:2015-05-06 13:10:04

标签: r

我有两个数据集y and x,我想基于x过滤y。

   y=c(0.5,0.2,0.1,0.6,0.4,1.3,0.6,2.8)
   x=c(128,64,32,16,2,48,24,6)
   Package HapEstXXR
   x=dec2bin(x)
   x
           128 64 32 16 8 4 2 1
  128   1  0  0  0 0 0 0 0
  64    0  1  0  0 0 0 0 0
  32    0  0  1  0 0 0 0 0
  16    0  0  0  1 0 0 0 0
  2     0  0  0  0 0 0 1 0
  48    0  0  1  1 0 0 0 0
  24    0  0  0  1 1 0 0 0
  6     0  0  0  0 0 1 1 0

正如您所见,x中的十进制数转换为二进制数。所以我们有八个数字。从左到右bit1 bit2 bit3 .... bit8。

我需要执行此操作:在bit2,bit4, and bit8x = 1时,替换Y by NA中的相应值。

1 个答案:

答案 0 :(得分:3)

如果你的“第二个”x对象是一个矩阵,你可以这样做:

y[rowSums(x[,c(2,4,8)])==3] <- NA

如果你想将NA置于y,当bit2,bit4或bit8为1时(与上面的内容相反,当所有3都放置NA时值为1),您可以这样做:

y[rowSums(x[,c(2,4,8)])>=1] <- NA