我正在寻找一种更有效的跟踪方法。我有一个monthucket
作为辅助数据框,还有df
library(dplyr)
set.seed(123)
monthbucket <- data.frame(
startmonth = seq(as.Date("2010-01-01"),as.Date("2011-05-01"),by="months"),
endmonth = seq(as.Date("2010-02-01"),as.Date("2011-06-01"),by="months")-1)
df <- data.frame(
start = sample(seq(as.Date("2010-01-01"),as.Date("2011-01-01"),by="months"),10,replace =T),
end = sample(seq(as.Date("2011-02-01"),as.Date("2011-05-01"),by="months"),10,replace =T),
sex = sample(c('F','M'),10,replace =T),
group = sample(1:8,10,replace =T))
我想基于monthbucket
获得df
中不同功能的计数。以下代码有效,但是当每个功能具有两个以上级别时,将变得乏味。例如,获取df$group
会很痛苦。
monthbucket %>%
group_by(startmonth) %>%
summarise(c.active= sum(df$start <=startmonth),
c.termed= sum(df$end < endmonth),
active= c.active-c.termed,
c.active.F= sum(df$start <=startmonth & df$sex=='F'),
c.termed.F= sum(df$end <endmonth & df$sex =='F'),
active.F= c.active.F-c.termed.F,
c.active.M= sum(df$start <=startmonth & df$sex=='M'),
c.termed.M= sum(df$end < endmonth & df$sex =='M'),
active.M= c.active.M-c.termed.M
)
两个问题,首先,我使用monthbucket
作为辅助数据框来检查记录是否在各自的时间范围内。是否有可能摆脱这一额外的步骤。其次,如何更改代码以更轻松地获得每个功能的多个级别的计数。