我正在研究流失分析的预测问题,我必须预测给定的客户是否会休眠。我有一个名为客户价值的变量,我想知道的是这个价值是否连续3个月下降趋势以及何时开始下降。
Client_ID YearMonth Amount
ABC 201607 1000
ABC 201606 2000
ABC 201605 3000
ABC 201608 3500
ABC 201604 2500
同样,我有2年的客户数据库和数据集中超过10K的客户。在上面的数据框架中,客户ABC
的下降趋势来自201605,201606,201607
所以我想在201605
中标记此客户,并希望在其他变量的帮助下确定该客户为什么减少了他的收入。
所需的Dataframe将是
Client_ID YearMonth Amount Decline_Flag
ABC 201607 1000 0
ABC 201606 2000 0
ABC 201605 3000 1
ABC 201608 3500 0
ABC 201604 2500 0
我怎样才能在r中实现这一目标?
答案 0 :(得分:1)
这里我假设您每个月都有可用数据,因此连续行实际上相隔一个月。即使不是这样,也可以相对容易地进行调整。
decline3
然后“3个月拒绝”标志存储在> df
Source: local data frame [5 x 7]
Groups: Client_ID [1]
Client_ID YearMonth Amount year month decline decline3
<fctr> <int> <int> <dbl> <dbl> <lgl> <lgl>
1 ABC 201604 2500 2016 4 FALSE FALSE
2 ABC 201605 3000 2016 5 FALSE TRUE
3 ABC 201606 2000 2016 6 TRUE FALSE
4 ABC 201607 1000 2016 7 TRUE FALSE
5 ABC 201608 3500 2016 8 FALSE FALSE
列中:
if (localStorage.container) {
var i = parseInt(localStorage.container);
} else {
localStorage.setItem('container', "0");
var i = parseInt(localStorage.container);
}
var caseNum = $("#caseNum").val();
localStorage.setItem('caseNum' + i, caseNum);
var empName = checkName()
localStorage.setItem('empName' + i, empName);
var emp = $("#emp").val();
localStorage.setItem('emp' + i, emp);
var trigTime = $("#trigTime").val();
localStorage.setItem('trigTime' + i, trigTime);
var country = $("#country").val();
localStorage.setItem('country' + i, country);
var date = $("#date").val();
localStorage.setItem('date' + i, date);
var caseDate = $("#date").val();
localStorage.setItem('caseDate' + i, caseDate);
var doneTime = currTime();
localStorage.setItem('doneTime' + i, doneTime);
var dispo = $("#dispo").val();
localStorage.setItem('dispo' + i, dispo);
var subDispo = $("#subDispo").val();
localStorage.setItem('subDispo' + i, subDispo);
var caseCount = $("#caseCount").val();
localStorage.setItem('caseCount' + i, caseCount);
var A1 = '';
localStorage.setItem('A1' + i, A1);
var A2 = '';
localStorage.setItem('A2' + i, A2);
var A3 = '';
localStorage.setItem('A3' + i, A3);
var project = $("input[type='radio'][name='project']:checked").val();
localStorage.setItem('project' + i, project);
var prefix = '';
if (country == "Kenya") {
prefix = "KY";
}
localStorage.setItem('prefix' + i, prefix);
var called1 = '';
if ($("#called0").prop("checked") == true) {
called1 = "Yes";
} else if ($("#called0").prop("checked") == false) {
called1 = "No";
}
localStorage.setItem('called1' + i, called1);
i++;
localStorage.setItem('container', i);
答案 1 :(得分:1)
您可以考虑使用针对先前测量的运行平均增量而不是此布尔值。这种方法将最小的减少视为相当于大规模的减少,这可能会对预测的质量产生负面影响。