【发布时间】:2021-05-30 13:03:51
【问题描述】:
我有一个数据框,其中包含来自 whatsapp 的发件人的消息。通常,人们倾向于在whatsapp中使用不止一条消息来说些什么。我的目标是将在大约 5 分钟的时间范围内发送的消息合并为一行。这必须按发件人分组,因为数据帧包含多个发件人。我的数据框如下所示:
Message Time Sender
hello 2018-12-14 16:27:00 300
how are you? 2018-12-14 16:29:00 300
do you reply? 2018-12-15 12:00:00 300
Hi 2018-12-14 16:30:00 200
Hi 2018-12-15 16:36:00 200
现在我希望它看起来像这样:
Message Time Sender
hello how are you? 2018-12-14 16:27:00 300
do you reply? 2018-12-15 12:00:00 300
Hi 2018-12-14 16:30:00 200
Hi 2018-12-15 16:3600 200
第一个和第二个已合并。到目前为止,我的尝试是将 group_map 与 reduce 一起使用,但我似乎找不到解决方案。
joinedMessageTable <- messageTable %>% group_by(Sender) %>% group_map(function(table, sender) {
Reduce(function(firstElement, result) {
value <- (firstElement + 5 *60 > result)
}, table$time)
})
有人知道怎么解决吗?
【问题讨论】:
-
如果消息在 5 分钟内发送,但在超过 5 分钟的时间段内发送,该怎么办?示例:来自发件人 300 的消息在 1:05、1:09、1:11 和 1:15 发送。你还想把这四个合并在一起吗?
-
是的,我想合并这些。我希望它基于时间范围内的最新发送消息。所以 1:05 + 5 = 1:10。包括 1:09。 1:09 + 5 = 1:14。所以包括 1:11。 1:11 + 5 = 1:16,所以也包括 1:15。
-
如果您以更易于复制的格式提供数据,最好使用
dput提供帮助。阅读how to give a reproducible example