gpt4 book ai didi

r - 排序或过滤与处理

转载 作者:行者123 更新时间:2023-12-04 18:42:19 24 4
gpt4 key购买 nike

当我写

dt[a>0, {...}, by=...]

{...}之前或之后处理 a>0过滤? (似乎答案在之前)。

我可以想象这两个订单都是有用的,所以正确的问题是,我想,我如何控制订单或过滤与处理?

最佳答案

i=参数首先(非常明智地)处理,因为您可以使用以下内容进行确认。

library(data.table)

dt <- data.table(a=c(0,1,0,1), grp=c("a", "a", "b", "b"))
# a grp
# 1: 0 a
# 2: 1 a
# 3: 0 b
# 4: 1 b

## Show that filtering op in i= is performed before processing in j=
dt[a>0, if(any(a<=0)) stop("a<=0 must've been passed on to j") else a, by=grp]
# grp V1
# 1: a 1
# 2: b 1

## Check that error _is_ thrown when when verboten elements make it past filter
dt[a<=0, if(any(a<=0)) stop("a<=0 must've been passed on to j") else a, by=grp]
# Error in `[.data.table`(dt, a <= 0, if (any(a <= 0)) \\
# stop("a<=0 must've been passed on to j") else a, :
# a<=0 must've been passed on to j

要第二次执行过滤操作,只需将其置于对 [.data.table() 的第二次调用中。 :
dt[,tot:=sum(a),by=grp][a>0,]
# a grp tot
# 1: 1 a 1
# 2: 1 b 1

关于r - 排序或过滤与处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22697102/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com