我是R的新手,并且仍在学习如何使用所有功能。我在我的项目中遇到了这个问题,所以一定会感谢您的帮助!
我具有从1月到12月的客户1、2、3和4的支出行为数据。每一行都是唯一的客户,每一列都是该月该客户的支出活动(1处于活动状态,0处于非活动状态) )。
+------------+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
| Name | Jan | Feb | Mar | Apr | May | Jun | Jul | Aug | Sep | Oct | Nov | Dec |
+------------+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
| Customer 1 | 1 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 1 | 1 | 0 | 1 |
| Customer 2 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 1 |
| Customer 3 | 1 | 1 | 1 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 |
| Customer 4 | 1 | 1 | 1 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 1 | 0 |
+------------+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
我试图在每行中找到3个连续零的“最后一次”出现(如果有的话),并找到它们的起点。这可以帮助我确定客户何时进入“空闲”或“休眠”状态。
预期结果将是:
Jun (or 6 as column index) for Customer 1
Sep (or 9 as column index) for Customer 2
Oct (or 10 as column index) for Customer 3, since the last 3-month occurrence begins at Oct instead of Sep
NA for Customer 4, since there's no such an occurrence
经历了关于stackoverflow的一些类似问题之后,我认为使用rle和apply可能是正确的方法,但是我一直在努力将其写入实际代码中。衷心感谢任何想法!
答案 0 :(得分:0)
我将融化数据框,因此共有3列: 名称,月份,支出行为。 然后,我将从zoo包中进行一次rollmean运算,并使其左对齐,其中rollmean为0的实例的子集,然后为每个客户选择最后一个观察值。