r - 基于使用第一天的队列
问题描述
我想根据我的应用数据集中第一次观察用户的月份来构建群组。假设 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
解决方案
只需转换substr
为不factor
带额外library
s 的同类群组标签。无论如何,您可能需要队列因素。
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))
推荐阅读
- python - 如何使用python将记录添加到MySQL中的表中?
- stata - 在特定观察后加载所有数据
- python - 将python脚本导入zabbix?
- python - 在 Keras 中创建“逐个样本”模型
- python - .. 用于 python 的 Dart 中的运算符
- ffmpeg - FFMPEG 无法对高速变化的视频进行编码
- python - 如何序列化不规则的熊猫每小时时间戳?
- javascript - 你如何将json数组分成两个arr?并通过firestore清空[]
- excel - 如何根据活动/选定单元格更改单元格值
- python - 启用延迟确认后,超过软时间限制后 Celery 任务重试