【发布时间】:2016-06-27 12:53:17
【问题描述】:
来自R新手用户的一个问题:我有一个连续的enabled_datetime和disabled_datetime的数据如下所示:
x<-as.data.frame(cbind(
supplier_id=281743,
enabled_datetime=c('2016-06-13 13:31:02','2016-06-14 07:39:19','2016-06-14 12:36:03','2016-06-16 13:44:30','2016-06-17 06:42:14'),
disabled_datetime = c('2016-06-14 07:39:19','2016-06-14 12:36:03','2016-06-16 13:44:30','2016-06-17 06:42:14', NA),
discount=c(25,15,15,10,30))
)
x
supplier_id enabled_datetime disabled_datetime discount
281743 2016-06-13 13:31:02 2016-06-14 07:39:19 25
281743 2016-06-14 07:39:19 2016-06-14 12:36:03 15
281743 2016-06-14 12:36:03 2016-06-16 13:44:30 15
281743 2016-06-16 13:44:30 2016-06-17 06:42:14 10
281743 2016-06-17 06:42:14 <NA> 30
我想变成这样:
supplier_id enabled_datetime disabled_datetime discount
281743 2016-06-13 13:31:02 2016-06-14 07:39:19 25
281743 2016-06-14 07:39:19 2016-06-16 13:44:30 15
281743 2016-06-16 13:44:30 2016-06-17 06:42:14 10
281743 2016-06-17 06:42:14 <NA> 30
即合并具有相同supplier_id、discount 的行并具有连续的enabled_datetime 和disabled_datetime。我能想到的是使用for 循环,有人知道怎么做吗?提前致谢。
【问题讨论】:
-
请阅读有关how to ask a good question 的信息以及如何提供reproducible example。这将使其他人更容易帮助您。
-
了解
lead()、lag()和merge。 -
为什么要合并?按供应商 ID 和折扣分组,并安排日期,您可以使用 dplyr 执行此操作...如果我错了,请纠正我? PS:请问为什么要这样投票?
-
@DimitriPetrenko 它不是 dplyr 中使用的“合并”,我的意思是我想将这两行合并为一行。知道该怎么做(在 dplyr 中可以)?
标签: r