【发布时间】:2018-08-23 13:25:23
【问题描述】:
我有一个包含三列的 df:StartDate、EndDate 和 SubscriptionType。
df = data.frame(StartDate = as.Date(c('2018-05-01', '2018-06-01', '2018-01-01', '2018-07-01', '2018-03-01')),
EndDate = as.Date(c('2019-04-30', '2019-05-31', '2018-12-31', '2019-06-30', '2019-02-28')),
SubscriptionType = c('monthly', 'monthly', 'yearly', 'yearly', 'yearly'))
例如,通过使用以下代码:
df %>% filter(StartDate <= ymd('2018-5-15') & EndDate >= ymd('2018-5-15')) %>% count()
我知道 5 月份有多少订阅处于活动状态。
我想打印 2018 年每个月的结果并将其存储在数据框中。
到目前为止,我尝试使用以下代码:
z = NULL
m = c(01,02,03,04,05,06,07,08,09,10,11,12)
for (i in m) {z = rbind(z, data.frame(df %>% filter(StartDate <= ymd('2018-i-15') & EndDate >= ymd('2018-i-15')) %>% count()))}
但我得到的是 24 个警告和一个仅填充零的数据框 z。
任何帮助将不胜感激,谢谢!
【问题讨论】:
-
也许你可以使用
lubridate包中的month()和一些dplyr,你能发布类似dput(df)的东西吗? -
你的意思是开始日期还是结束日期应该在 2018 年?
标签: r