通过作为参数传递的一组列聚合数据框
Aggregating a dataframe by a group of columns passed as arguments
我有一个数据框,其中包含一个人在一天中不同时间的特征集。我想将它聚合为不同的持续时间,即 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]
}
我只想像 "limb" 一样将 "Person,hour(Date),yday(Date),wday(Date)" 作为参数传递给函数,以便它可以使用这四个值(或任何其他值,以防参数不同)进行聚合。
也许这会像这样工作...
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"))
我有一个数据框,其中包含一个人在一天中不同时间的特征集。我想将它聚合为不同的持续时间,即 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]
}
我只想像 "limb" 一样将 "Person,hour(Date),yday(Date),wday(Date)" 作为参数传递给函数,以便它可以使用这四个值(或任何其他值,以防参数不同)进行聚合。
也许这会像这样工作...
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"))