Агрегирование кадра данных по группе столбцов, переданных в качестве аргументов - PullRequest
0 голосов
/ 03 июня 2018

У меня есть фрейм данных, который содержит набор функций для человека в разное время дня.Я хочу агрегировать его за разные промежутки времени, т.е. 1 час, 2 часа и так далее.Я написал эту функцию следующим образом.

 library(data.table)

 getAggregate <- function(comb,limb) {
      comb[Limb == as.character(limb),
      c(fb(BC),
      structure(lapply(.SD,mean),names=meanFeatures),
      structure(lapply(.SD,ivar),names=varFeatures)
      )
     ,by=.(Person,hour(Date),yday(Date),wday(Date))
     ,.SDcols = sigfeats]
 }

Я просто хочу передать «Person, hour (Date), yday (Date), wday (Date)» в качестве аргументов функции так же, как «limb»так что он может агрегировать, используя эти четыре значения (или любые другие значения, если аргументы отличаются).

1 Ответ

0 голосов
/ 03 июня 2018

Может быть, это будет работать так ...

library(lubridate)
library(data.table)

getAggregate <- function(comb, limb, byList) {
    comb$Hour <- hour(comb$Date)
    comb$YDay <- yday(comb$Date)
    comb$WDay <- wday(comb$Date)
    comb$Minute <- minute(Date)

    comb[Limb == as.character(limb),
         c(
             fb(BC),
             structure(lapply(.SD, mean), names = meanFeatures),
             structure(lapply(.SD, ivar), names = varFeatures)
         )
         , by = byList
         , .SDcols = sigfeats]
}

... и вы будете вызывать функцию вот так ...

getAggregate(comb, limb, byList = c("Person", "Hour", "YDay", "WDay", "Minute"))  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...