首页 > 解决方案 > 基于使用第一天的队列

问题描述

我想根据我的应用数据集中第一次观察用户的月份来构建群组。假设 2018 年 1 月是我观察期的第一个月。

我已经尝试过这样的事情(......不工作):

da_app = group_by(da, userid) %>%
  mutate(cohort= min(day))

示例数据:

da_app <- data.frame(userid = c(1,1,2,2), day = c("2019-02-20","2019-02-21","2018-03-11","2018-03-12"))
da_app
  userid        day
1      1 2019-02-20
2      1 2019-02-21
3      2 2018-03-11
4      2 2018-03-12

我想要这个:

da_app2
  userid        day cohort
1      1 2019-02-20     14
2      1 2019-02-21     14
3      2 2018-03-11      3
4      2 2018-03-12      3

标签: rdplyrtransform

解决方案


只需转换substr为不factor带额外librarys 的同类群组标签。无论如何,您可能需要队列因素。

da_app$cohort <- factor(substr(da_app$day, 6, 7), labels=c(14, 3))
da_app
#   userid        day cohort
# 1      1 2019-02-20     14
# 2      1 2019-02-21     14
# 3      2 2018-03-11      3
# 4      2 2018-03-12      3

数据

da_app <- structure(list(userid = c(1, 1, 2, 2), day = structure(c(3L, 
4L, 1L, 2L), .Label = c("2018-03-11", "2018-03-12", "2019-02-20", 
"2019-02-21"), class = "factor")), class = "data.frame", row.names = c(NA, 
-4L))

推荐阅读