[英]How to iterate within a data.table
我想计算分组和累积的统计数据,例如下面的模拟,其中我每天有 10 次观察,持续 5 天,我计算每天的累积标准偏差。
library(data.table)
library(tictoc)
DURATION <- 5
DAILY_N <- 10
N_PER_COND <- DURATION * DAILY_N
dt <-
data.table(
day = rep(1:DURATION, each = DAILY_N),
x = rgamma(n=N_PER_COND, shape=5, scale=25)
)
cum_stdevs <- vector('double', DURATION)
tic()
for (i in seq_along(cum_stdevs)) {
cum_x <- dt[day <= i, x]
cum_stdevs[i] <- sd(cum_x)
}
toc()
有没有办法在 data.table 中执行这种操作而不使用 for 循环?
即使在 for 循环中,速度也比使用标准数据帧提高了 14 倍。
我想你可以在data.table
中尝试sapply
,如下所示
cum_stdevs <- dt[, sapply(seq_along(cum_stdevs), function(k) sd(x[day <= k]))]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.