【发布时间】:2020-02-03 09:14:11
【问题描述】:
我正在尝试在数据表上使用rollapplyr(),并通过.SDcols 使用它来生成各种列。但是,rollapplyr() 不是将一列的结果放在另一列的结果旁边,而是将每一列的结果堆叠在另一列之下。下面一些代码来说明我的意思:
library(data.table)
library(zoo)
cars <- data.table(mtcars)[, c('cyl', 'mpg', 'hp')]
setorder(cars, cyl)
maCols <- c('mpg_ma', 'hp_ma')
cars[, rollapplyr(.SD, mean, width = 3, align = 'right', partial = TRUE),
by = cyl,
.SDcols = c('mpg', 'hp')]
此代码生成一个包含 64 行的两列(cyl 和 V1)的 data.table,而不是包含 32 列的三列(cyl、V1 和 V2)的数据表。有没有办法获得后者?
【问题讨论】:
标签: r data.table rollapply