对子集执行任务,而不是过滤掉

时间:2019-01-02 13:09:20

标签: r data.table

我正在使用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。

1 个答案:

答案 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)

这是您要寻找的吗?