【发布时间】:2018-06-18 00:13:10
【问题描述】:
我无法找出解决此问题的最佳方法。我担心这可能是由于对分析的基本误解(稍后会详细介绍)。问题是这样的:在大约 25,000 笔交易中,我需要找出哪些客户在订阅到期后的两个月内致电。
id = unique customer ID
call = 1 signifies the observation is a call
lapse = 1 signifies the observation is a lapse
请注意,如果任何客户在同一日期同时有电话和失效,则该客户在该日期将有两个条目;客户可以在一个日期进行多次呼叫(每个呼叫都有自己的观察结果和 df 中自己的行);但任何客户每个日期只能失效一次。
没有解的mini-df:
library(lubridate)
df <- data.frame(id = c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4),
date = dmy(c("01-01-2014", "07-02-2014", "05-03-2014", "14-02-2014", "15-04-2014", "17-04-2014", "11-05-2014", "19-08-2014", "07-10-2014", "21-12-2014", "04-06-2010", "06-03-2012", "12-07-2012", "13-07-2012", "14-01-2014", "05-05-2014", "19-08-2014", "19-08-2014", "13-02-2013", "11-11-2013", "04-03-2014", "10-12-2014", "02-03-2017", "03-03-2017")),
call = c(1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0),
lapse = c(0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1))
...和解向量:
df$call_2months_or_less_before_lapse <- c(1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0)
所以,当我这么说时,我感到畏缩,但我可以在 Excel 中解决这个问题。但是,我拒绝放弃——我永远不会回去!
所以我想指出关于解决方案代码的正确方向,特别是如果该方向位于 tidyverse 中的某个地方。但是,我担心我可能对 tidy data 有一个根本性的误解。这是我开始学习 R 以来第一个无法强行解决的问题。
【问题讨论】: