[英]Select rows in a data.table given by a filter in an other data.table
[英]filter rows in data.table with `by`
我想按照以下標准篩選組。 DT
帶來意想不到的結果。
library(data.table)
library(dplyr)
dt <- data.table(
logic = c(TRUE, TRUE, FALSE, TRUE, TRUE, TRUE),
group = c("A" , "A", "A" , "B" , "B" , "B")
)
我想過濾組, logic
字段值all
TRUE
。
dplyr
) 正如您所見, dplyr
按預期工作,並僅返回group = B
值
dt %>%
group_by(group) %>%
filter(all(logic))
# Source: local data table [3 x 2]
# Groups: group
# logic group
# 1 TRUE B
# 2 TRUE B
# 3 TRUE B
data.table
意外行為 DT
並不真正過濾行,無論是帶來所有表還是什么都沒有。
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
你可以使用[
as in
dt[, .SD[all(logic)], by = group]
# group logic
#1: B TRUE
#2: B TRUE
#3: B TRUE
我們需要使用if
dt[, if(all(logic)) .SD, by = group]
# group logic
#1: B TRUE
#2: B TRUE
#3: B TRUE
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.