如果最大组值>某个值,则过滤data.table组内的行

时间:2019-08-28 18:19:36

标签: r data.table

如果该组中的最大值大于某个值,则尝试过滤data.table中该组中的所有行。下面是我如何在DPLY中进行操作以及如何在data.table中的两个步骤中使它工作。

SELECT e.*, a.*
FROM episodes e JOIN
     assets a
     ON e.id = a.episode_id
WHERE a.last_updated = (SELECT MAX(a2.last_updated)
                        FROM assets a2
                        WHERE a2.episode <> '0' AND
                              a2.episode_id <> '0'
                              a2.show_id = a.show_id
                       )

有没有一种方法可以一步完成而不在数据集中创建列?我所能找到的就是对一个子集进行分组以获得一个组中的一个特定值,而不是返回该组中符合条件的所有行。

1 个答案:

答案 0 :(得分:7)

我们可以使用.I获取行索引,提取索引列和子集

df[df[, .I[max(x) < 11], y]$V1]
#    x y
#1:  1 1
#2:  4 1
#3:  7 1
#4: 10 1

或者另一个选择是.SD

df[, .SD[max(x) < 11], y]