我有这个数据框:
plans date expiring_date
1 premium 2020-07-12 20:26:54 2020-08-11 20:26:54
2 premium 2020-08-15 00:11:54 2020-09-14 00:11:54
3 premium 2020-09-14 19:59:25 2020-10-14 19:59:25
4 single 2020-09-14 20:02:41 NA
5 double 2020-09-17 16:31:07 NA
6 double 2020-10-07 09:54:38 NA
7 premium 2020-10-15 12:06:57 2020-11-14 12:06:57
8 double 2020-10-15 12:08:46 NA
9 single 2020-10-15 12:13:59 NA
这是由此产生的:
df <- data.frame(plans = c("premium", "premium", "premium", "single", "double", "double", "premium", "double", "single"),
date = as.POSIXct(c("2020-07-12 20:26:54", "2020-08-15 00:11:54", "2020-09-14 19:59:25",
"2020-09-14 20:02:41", "2020-09-17 16:31:07", "2020-10-07 09:54:38",
"2020-10-15 12:06:57", "2020-10-15 12:08:46", "2020-10-15 12:13:59")),
expiring_date = as.POSIXct(c("2020-08-11 20:26:54", "2020-09-14 00:11:54", "2020-10-14 19:59:25",
NA, NA, NA, "2020-11-14 12:06:57", NA, NA)))
我想要的是添加一个新列,该行将为具有溢价计划的行获取具有溢价计划的下一行的日期。因此,结果数据帧将是这样的:
plans date expiring_date next_premium_date
1 premium 2020-07-12 20:26:54 2020-08-11 20:26:54 2020-08-15 00:11:54
2 premium 2020-08-15 00:11:54 2020-09-14 00:11:54 2020-09-14 19:59:25
3 premium 2020-09-14 19:59:25 2020-10-14 19:59:25 2020-10-15 12:06:57
4 single 2020-09-14 20:02:41 NA NA
5 double 2020-09-17 16:31:07 NA NA
6 double 2020-10-07 09:54:38 NA NA
7 premium 2020-10-15 12:06:57 2020-11-14 12:06:57 NA
8 double 2020-10-15 12:08:46 NA NA
9 single 2020-10-15 12:13:59 NA NA
我正在尝试使用dplyr
库,因为我要使用该group_by
函数,因为我有多个用户,并且我想为每个用户执行此操作,但到目前为止没有结果。有任何想法吗?
这项工作:
> library(dplyr)
> df %>% filter(plans == 'premium') %>% mutate(next_premium_date = lead(date)) %>%
+ right_join(df) %>% arrange(date)
Joining, by = c("plans", "date", "expiring_date")
plans date expiring_date next_premium_date
1 premium 2020-07-12 20:26:54 2020-08-11 20:26:54 2020-08-15 00:11:54
2 premium 2020-08-15 00:11:54 2020-09-14 00:11:54 2020-09-14 19:59:25
3 premium 2020-09-14 19:59:25 2020-10-14 19:59:25 2020-10-15 12:06:57
4 single 2020-09-14 20:02:41 <NA> <NA>
5 double 2020-09-17 16:31:07 <NA> <NA>
6 double 2020-10-07 09:54:38 <NA> <NA>
7 premium 2020-10-15 12:06:57 2020-11-14 12:06:57 <NA>
8 double 2020-10-15 12:08:46 <NA> <NA>
9 single 2020-10-15 12:13:59 <NA> <NA>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句