通过作为参数传递的一组列聚合数据帧
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过作为参数传递的一组列聚合数据帧相关的知识,希望对你有一定的参考价值。
我有一个数据框,其中包含一天中不同时间的人的功能集。我想将它聚合不同的持续时间,即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”,这样它就可以使用这四个值进行聚合(或者任何其他值包含参数是不同的)。
答案
也许这会像这样......
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"))
以上是关于通过作为参数传递的一组列聚合数据帧的主要内容,如果未能解决你的问题,请参考以下文章
如何通过将数据作为参数传递以过滤 unix 时间戳来查询具有聚合的 mongodb