我有一个包含user.id和购买日期的数据集。我需要计算R中每个用户的连续购买之间的持续时间。
以下是我的示例数据:
row.names USER.ID ISO_DATE
1 1067 3 2014-05-05
2 1079 3 2014-05-06
3 1571 3 2014-05-20
4 1625 3 2014-05-21
5 1759 3 2014-05-24
6 2387 3 2014-06-09
7 2683 3 2014-06-14
8 2902 3 2014-06-18
9 3301 3 2014-06-26
10 4169 3 2014-07-11
11 5361 3 2014-07-21
12 5419 3 2014-07-22
13 5921 3 2014-07-25
14 6314 3 2014-07-27
15 7361 3 2014-08-03
16 8146 3 2014-08-07
17 10091 3 2014-08-12
18 10961 3 2014-08-13
19 13296 3 2014-08-16
20 13688 3 2014-08-17
21 15672 3 2014-08-20
22 18586 3 2014-08-22
23 24304 3 2014-08-31
24 38123 3 2014-10-22
25 50124 3 2014-11-19
26 50489 3 2014-11-20
27 52201 3 2014-11-23
28 52900 3 2014-11-25
29 61564 3 2014-12-06
30 64351 3 2014-12-09
31 65465 3 2014-12-10
32 67880 3 2014-12-12
33 69363 3 2014-12-14
34 69982 3 2014-12-14
35 70040 3 2014-12-14
36 70351 3 2014-12-15
37 72393 3 2014-12-16
38 73220 3 2014-12-17
39 75110 3 2014-12-18
40 78827 3 2014-12-20
41 112447 3 2015-01-08
42 113903 3 2015-01-09
43 114723 3 2015-01-11
44 114760 3 2015-01-12
45 115464 3 2015-01-14
46 116095 3 2015-01-15
47 118406 3 2015-01-18
48 118842 3 2015-01-18
49 119527 3 2015-01-19
50 120774 3 2015-01-21
51 120853 3 2015-01-22
52 121284 3 2015-01-22
53 121976 3 2015-01-23
54 126256 3 2015-01-26
55 126498 3 2015-01-27
56 127776 3 2015-01-28
57 128537 3 2015-01-29
58 128817 3 2015-01-30
59 129374 3 2015-01-30
60 131604 3 2015-02-01
61 132150 3 2015-02-02
62 132557 3 2015-02-03
63 132953 3 2015-02-04
64 135514 3 2015-02-08
65 136058 3 2015-02-09
66 136965 3 2015-02-10
67 140787 3 2015-02-13
68 143113 3 2015-02-15
69 143793 3 2015-02-16
70 146344 3 2015-02-19
71 147669 3 2015-02-20
72 148397 3 2015-02-21
73 151196 3 2015-02-23
74 156014 3 2015-02-26
75 161235 3 2015-02-28
76 162521 3 2015-03-01
77 177878 3 2015-03-11
78 190178 3 2015-03-18
79 199679 3 2015-03-22
80 212460 3 2015-03-28
81 221153 3 2015-04-03
82 228935 3 2015-04-07
83 230358 3 2015-04-08
84 230696 3 2015-04-08
85 250294 3 2015-04-15
86 267469 3 2015-04-19
87 270947 3 2015-04-21
88 274882 3 2015-04-22
89 282252 3 2015-04-24
90 299949 3 2015-04-28
91 323336 3 2015-05-03
92 324847 3 2015-05-03
93 326284 3 2015-05-04
94 337381 3 2015-05-06
95 346498 3 2015-05-08
96 372764 3 2015-05-15
97 376366 3 2015-05-16
98 379325 3 2015-05-16
99 386458 3 2015-05-19
100 392200 3 2015-05-21
101 393039 3 2015-05-21
102 399126 3 2015-05-22
103 106789 7 2015-01-03
104 124929 7 2015-01-25
105 148711 7 2015-02-21
106 161337 7 2015-02-28
107 163738 7 2015-03-02
108 164070 7 2015-03-02
109 170121 7 2015-03-07
110 184856 7 2015-03-14
111 314891 7 2015-05-01
112 182 9 2014-03-12
113 290 9 2014-03-19
114 549 9 2014-04-10
115 553 9 2014-04-10
116 559 9 2014-04-10
117 564 9 2014-04-11
118 1973 9 2014-05-30
119 1985 9 2014-05-30
120 2243 9 2014-06-06
121 2298 9 2014-06-07
122 2713 9 2014-06-14
123 35352 9 2014-10-17
124 35436 9 2014-10-17
125 35509 9 2014-10-17
126 35641 9 2014-10-17
127 35642 9 2014-10-17
128 35679 9 2014-10-17
129 35750 9 2014-10-17
130 36849 9 2014-10-19
131 37247 9 2014-10-20
132 37268 9 2014-10-20
133 79630 9 2014-12-20
134 3900 13 2014-07-08
135 3907 13 2014-07-08
136 4125 13 2014-07-11
137 4142 13 2014-07-11
138 5049 13 2014-07-18
139 5157 13 2014-07-19
140 5648 13 2014-07-23
141 5659 13 2014-07-23
142 6336 13 2014-07-27
143 6621 13 2014-07-29
144 6971 13 2014-07-31
145 7221 13 2014-08-02
146 7310 13 2014-08-03
147 8036 13 2014-08-06
148 11437 13 2014-08-14
149 11500 13 2014-08-14
150 14627 13 2014-08-18
151 15260 13 2014-08-19
152 22417 13 2014-08-26
153 23837 13 2014-08-30
154 24668 13 2014-09-02
155 26481 13 2014-09-10
156 26788 13 2014-09-12
157 27116 13 2014-09-13
158 27959 13 2014-09-18
159 28304 13 2014-09-20
160 28552 13 2014-09-21
161 29069 13 2014-09-24
162 30041 13 2014-09-28
163 30349 13 2014-09-30
164 31352 13 2014-10-04
165 32189 13 2014-10-09
166 34163 13 2014-10-15
167 36946 13 2014-10-20
168 36977 13 2014-10-20
169 37042 13 2014-10-20
170 37266 13 2014-10-20
171 40117 13 2014-10-25
172 40765 13 2014-10-26
173 43418 13 2014-10-29
174 47691 13 2014-11-10
175 54971 13 2014-11-28
176 55275 13 2014-11-28
177 55297 13 2014-11-28
178 55458 13 2014-11-28
179 55908 13 2014-11-29
180 59925 13 2014-12-03
181 60722 13 2014-12-05
182 61178 13 2014-12-05
183 65547 13 2014-12-10
184 107202 13 2015-01-03
185 173010 13 2015-03-08
186 199791 13 2015-03-22
187 227003 13 2015-04-06
188 252548 13 2015-04-16
189 271845 13 2015-04-21
190 274804 13 2015-04-22
191 294579 13 2015-04-26
192 332205 13 2015-05-05
193 339695 13 2015-05-07
194 373554 13 2015-05-15
195 390934 13 2015-05-21
196 203 16 2014-03-13
197 228 16 2014-03-15
198 616 16 2014-04-12
199 664 16 2014-04-14
200 851 16 2014-04-23
201 1826 16 2014-05-26
202 1969 16 2014-05-30
203 2026 16 2014-05-31
204 2419 16 2014-06-10
205 3295 16 2014-06-26
206 14030 16 2014-08-18
207 16368 16 2014-08-21
208 21239 16 2014-08-24
209 23651 16 2014-08-29
210 24533 16 2014-09-01
211 25868 16 2014-09-07
212 27408 16 2014-09-15
213 27721 16 2014-09-17
214 29076 16 2014-09-24
215 30122 16 2014-09-29
216 31622 16 2014-10-06
217 31981 16 2014-10-07
我想添加一个列,以便为每个用户的连续购买带来差异。我正在使用ddply函数,但它显示出一些错误。
以下是我的尝试:
users_frequency <- ddply(users_ordered, "USER.ID", summarize,
orderfrequency = as.numeric(diff(ISO_DATE)))
答案 0 :(得分:2)
如果您对dplyr
而不是plyr
df %>%
mutate(ISO_DATE = as.Date(df$ISO_DATE, "%Y-%m-%d")) %>%
group_by(USER.ID) %>%
arrange(ISO_DATE) %>%
mutate(lag = lag(ISO_DATE), difference = ISO_DATE - lag)