【发布时间】:2021-03-12 19:22:22
【问题描述】:
我的数据有一个已获得的 500 万客户的列表以及获得日期。迄今为止,还有大约 300 万客户进行了交易
我想找到一种方法来绘制数据,以找出在几个月内从已收购的基础上进行交易的客户
样本数据
CID 是客户 ID yw 是交易的月份和年份 month_year 获取月份和年份
CID yw month_year
1000000 2018-01 2010-02
1000001 2018-05 2017-05
1000002 2018-06 2017-05
1000002 2019-06 2017-05
1000003 2018-12 2015-04
1000004 2019-07 2019-01
1000005 2020-09 2020-06
1000006 NA 2017-05
还有一些未交易的已获取客户也如 1000006。 有一些像 1000002 这样多次交易的客户,我只想计算一次,这将是最小交易月份,即 2018-06 而已
Output
Acquired NA 2018-01 2018-05 2018-06 2018-12 2019-07 2020-09
2010-02 1 1
2015-04 1 1
2017-05 3 1 1 1
2019-01 1 1
2020-06 1 1
试过这个代码
data_a <- df_b[c(1,1:nrow(df_b)),]
setDT(data_a)
(cohorts <- dcast(unique(data_a)[,cohort:=min(yw),by=user_id],cohort~month_year))
m <- as.matrix(cohorts[,-1])
rownames(m) <- cohorts[[1]]
m[lower.tri(m)] <- NA
names(dimnames(m)) <- c("cohort", "yearmon")
【问题讨论】:
标签: r data.table