首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >条件为R的时间序列列综述

条件为R的时间序列列综述
EN

Stack Overflow用户
提问于 2017-12-04 21:50:14
回答 1查看 78关注 0票数 0

在这个时间序列数据集中,我遇到了一个可能的聚合/总结问题。

下面是一个包含来自网络聊天系统的聊天的独特实例的数据集。

代码语言:javascript
复制
chatId  agentId beginning_timestamp ending_timestamp    answer
    1   22      4/07/2016 9:00      4/07/2016 9:30      1
    2   22      4/07/2016 9:26      4/07/2016 9:35      5
    3   22      4/07/2016 9:15      4/07/2016 9:19      5
    4   10      4/07/2016 11:17     4/07/2016 12:13     2
    5   10      4/07/2016 11:29     4/07/2016 11:50     1
  • 唯一的id字段是chatId。
  • agentId是一个唯一的代理谁收到了这个聊天
  • beginning_timestamp是聊天开始的时候
  • ending_timestamp是聊天结束的时候
  • 答案是用于以后分析的连续变量。

我想使用dplyr (或其他任何东西)以这种方式总结以下数据集:

  • 对于每一组(agentId和chatId),找出是否有另一次在同一时间框架内进行的聊天(从beginning_timestamp加5分钟到ending_timestamp -5分钟)。
  • 如果有一个聊天,写出事实,这个独特的聊天发生了,而有另一个聊天正在进行。

下面是一个结果数据集,其中有一个额外的列(multiple_chats=一个离散变量将完成),我想要这样做:

代码语言:javascript
复制
    chatId  agentId beginning_timestamp ending_timestamp    answer   multiple_chats
        1   22      4/07/2016 9:00      4/07/2016 9:30      1          1
        2   22      4/07/2016 9:26      4/07/2016 9:35      5          0
        3   22      4/07/2016 9:15      4/07/2016 9:19      5          1
        4   10      4/07/2016 11:17     4/07/2016 12:13     2          1
        5   10      4/07/2016 11:29     4/07/2016 11:50     1          1

如有任何答案,我们将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-05 01:52:42

看起来,您的一些重叠可能与您在“结果数据集”中显示的内容不同,但下面是使用here输入的一个尝试。

代码语言:javascript
复制
df <- data.frame(chatID = 1:5, agentID = c(22,22,22,10,10), 
             beginning_timestamp = c('4/07/2016 9:00', '4/07/2016 9:26', '4/07/2016 9:15', '4/07/2016 11:17', '4/07/2016 11:29'),
             ending_timestamp = c('4/07/2016 9:30', '4/07/2016 9:35', '4/07/2016 9:19', '4/07/2016 12:13', '4/07/2016 11:50'),
             answer = c(1,5,5,2,1))

代码语言:javascript
复制
ibrary(tidyverse)
library(lubridate)

df %>% 
  mutate(beginning_timestamp = mdy_hm(beginning_timestamp),
         ending_timestamp = mdy_hm(ending_timestamp),
         int = interval(beginning_timestamp + minutes(5), 
                        ending_timestamp - minutes(5))) -> df

df$multiple_chats = unlist(tapply(df$int, df$agentID, 
                           function(x) as.numeric(rowSums(outer(x, x, int_overlaps))>1)))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47642544

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档