gpt4 book ai didi

r - 在 R 中创建客户流失的二进制响应变量

转载 作者:行者123 更新时间:2023-12-01 23:30:38 26 4
gpt4 key购买 nike

我有以下 excel 文件:

CustomerID  year retained
1 2012 0
2 2013 0
3 2007 1
3 2008 1
3 2009 0
4 2010 0
5 2008 1
5 2009 0
6 2015 0
7 2014 0
8 2010 1
8 2011 1
8 2012 1
8 2013 0
9 2015 0
10 2015 0

在 excel 中,创建保留变量的命令是:IF(A2=A3,1,0)。

我已经在 Internet 上阅读了很多关于 lapply、sapply 和其他关于 R 生存分析的例子,尤其是在这个很棒的网站上——但我在 R 中实现这个时遇到了麻烦。我知道它会是这样的:

df["retained"] <- something

我能够使用以下代码成功计算任期:

df$tenure <- with(df,ave(CustomerID,CustomerID,FUN=seq_along))

但我无法想出 df["retained"] 的 R 代码应该是什么,而且我发现大多数其他 Stackoverflow 帖子在 R 方面更高级。所以希望除了解决我的问题是,这也可以帮助那些在努力中从 excel 初步过渡到 R 的人。非常感谢。

最佳答案

这里有一个稍微不正统的解决方案:

df$retained <- c(+(df$CustomerID[-1L]==df$CustomerID[-nrow(df)]),0L);
## CustomerID year retained
## 1 1 2012 0
## 2 2 2013 0
## 3 3 2007 1
## 4 3 2008 1
## 5 3 2009 0
## 6 4 2010 0
## 7 5 2008 1
## 8 5 2009 0
## 9 6 2015 0
## 10 7 2014 0
## 11 8 2010 1
## 12 8 2011 1
## 13 8 2012 1
## 14 8 2013 0
## 15 9 2015 0
## 16 10 2015 0

它的工作原理是测试下一个 CustomerID 是否等于previous CustomerID。如果为 true,则当前行(对应于 previous CustomerID)将被保留,因此值应为 1。在(最新版本的)R 中,您可以使用一元加号运算符将逻辑向量强制转换为整数向量,因此将一元加号应用于相等比较的结果给出 1 表示真,0 表示假。

此外,我们必须用零手动补充生成的整数向量,因为最后一行没有可以与之比较的 next CustomerID

此解决方案仅在 data.frame 按 CustomerID 排序,然后按 year 排序时才有效。

关于r - 在 R 中创建客户流失的二进制响应变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38062674/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com