>

가지고있는 각 숫자 변수에 대한 롤링 평균을 얻고 싶습니다. 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 = 공유

각 수용체에 의해 "AvgConc", "TotDep", "DryDep"및 "WetDep"에 대한 5 시간 롤링 수단을 얻고 싶습니다.


  • 답변 # 1

    설명에서 다음과 같은 것을 원합니다. 새 비네팅 중 하나에서 찾을 수있는 하나의 예와 비슷합니다.

    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")]
    
    

  • 답변 # 2

    이제 frollmean 를 사용할 수 있습니다   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")
    xy <- c("x", "y")
    DT[, (xy):= lapply(.SD, frollmean, n = 3, fill = NA, align="center"), 
                                       by = g, .SDcols =  xy]
    
    

    여기서 x 및 y 열을 순환 평균으로 바꿉니다.

관련 자료

  • 이전 tensorflow2.0 - tensorflow 20 - 간단한 기능 최소화
  • 다음 oracle - VARCHAR2 (20 BYTE) 데이터 유형 열이 공백으로 표시됨