我正在使用data.table执行多个过滤步骤(在示例中使用变量1-8)。我想以某种方式更改代码,而不是提取数据表的子集,而是将数据表中的布尔变量(变量9)从TRUE更改为FALSE,而不用先提取行。
直到现在,我仍在尝试使用data.table包进行此操作,但我也对使用另一个包或baseR的解决方案感到满意。
我用来提取子集的一个示例性过滤步骤:
DT_new <- DT[DT[Variable1=="M+H" & Variable2==100], on=.(Variable3,
Variable4, Variable5)][Variable6-Variable7 >= 0 | Variable8 < 100]
我想以DTnew仍然包含所有行(甚至是我的过滤器拒绝的行)的方式进行设置。但是,对于那些不符合过滤条件的行,我想将数据表中Variable9的值从TRUE切换为FALSE。
答案 0 :(得分:1)
也许您可以这样尝试:
DT_tmp <- DT[Variable1=="M+H" & Variable2==100], on=.(Variable3,
Variable4, Variable5)]
DT$Variable9 <- ifelse( (DT_tmp$Variable6-DT_tmp$Variable7 >= 0 | DT_tmp$Variable8 < 100), T, F)
这是您要寻找的吗?