首页 > 解决方案 > 有没有更简单的方法可以按日期查找某个因素的比例?

问题描述

我的数据由日期(从 2008 年 1 月 1 日到 2019 年 1 月 12 日每个月的第一个日期)和一列因素(0 或 1)组成。我想创建一个新的数据集,每个月的比例为 1。

我首先按日期拆分数据。

split_by_month=split(pre_polchangedata,as.Date(pre_polchangedata$ServiceDate)

然后我一直在手动创建每月 1 比例的新变量,就像这样

Jan2008=split_by_month$'2008-01-01'
summary(Jan2008$FamilyRetentionFail)
0          1
12504    1367

不用说,这是一个非常缓慢的过程!有没有更快的方法来做到这一点?

我试过了

pre_polchangedata %>*
group_by(ServiceDate)
mutate(Prop=sum(familyRetentionFail==1)/n()) %>%

但它只是制作了与我之前完全相同的数据框。

标签: rgroup-byfactors

解决方案


你可以试试aggregate

aggregate(familyRetentionFail~ServiceDate, pre_polchangedata,
           function(x) mean(x == 1))

如果familyRetentionFail是数字并且只有 0 和 1 值,则上述可以简化为:

aggregate(familyRetentionFail~ServiceDate, pre_polchangedata, mean)

推荐阅读