我有两个数据集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 bit8
中x = 1
时,替换Y by NA
中的相应值。
答案 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