簡體   English   中英

使用 data.table 包對 R 中的多個變量進行滾動平均

[英]rolling average to multiple variables in R using data.table package

我想獲得我擁有的每個數字變量的滾動平均值。 使用 data.table 包,我知道如何計算單個變量。 但是我應該如何修改代碼以便它可以一次處理多個變量,而不是修改變量名稱並多次重復此過程? 謝謝。

假設我有其他名為“V2”、“V3”和“V4”的數字變量。

require(data.table)
setDT(data)
setkey(data,Receptor,date)
data[ , `:=` ('RollConc' = rollmean(AvgConc, 48, align="left", na.pad=TRUE)) , by=Receptor]

可以在以下位置找到我的示例數據的副本: https : //drive.google.com/file/d/0B86_a8ltyoL3OE9KTUstYmRRbFk/view?usp=sharing

我想通過每個受體獲得“AvgConc”、“TotDep”、“DryDep”和“WetDep”的 5 小時滾動方式。

根據您的描述,您需要類似這樣的內容,這類似於可以data.table小插圖之一中找到的一個示例:

library(data.table)
set.seed(42)
DT <- data.table(x = rnorm(10), y = rlnorm(10), z = runif(10), g = c("a", "b"), key = "g")
library(zoo)
DT[, paste0("ravg_", c("x", "y")) := lapply(.SD, rollmean, k = 3, na.pad = TRUE), 
   by = g, .SDcols = c("x", "y")]

現在,可以frollmean使用data.table包中的frollmean函數。

library(data.table)    
xy <- c("x", "y")
DT[, (xy):= lapply(.SD, frollmean, n = 3, fill = NA, align="center"), 
                                   by = g, .SDcols =  xy]

在這里,我用滾動平均值替換 x 和 y 列。


# Data
set.seed(42)
DT <- data.table(x = rnorm(10), y = rlnorm(10), z = runif(10), 
                                g = c("a", "b"), key = "g")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM