I would like to filter out a group that meets the following criteria. DTbrings unexpected results.
Input data
library(data.table)
library(dplyr)
dt <- data.table(
logic = c(TRUE, TRUE, FALSE, TRUE, TRUE, TRUE),
group = c("A" , "A", "A" , "B" , "B" , "B")
)
I would like to filter the group where the field values are logic all TRUE.
Expected Behavior (by dplyr)
As you can see, it dplyrworks as expected and returns only values withgroup = B
dt %>%
group_by(group) %>%
filter(all(logic))
Unexpected behavior data.table
DT does not filter rows, or brings the entire table, or nothing.
dt[all(logic), group, by = group]
# Empty data.table (0 rows) of 2 cols: group,group
dt[all(.SD$logic), group,by = group]
# group group
# 1: A A
# 2: B B
source
share