计算特定时间之前R中的一系列项目的事件

用户名

我有一个项目的数据框,其中包含在不同时间发生的一定数量的不同事件。例如说我在各种足球比赛中都有过几次比赛(进球,角球,红牌等等)。我想计算每个游戏中每个团队在一定时间之前发生的每个事件的数量(每个游戏中的时间是不同的)。

因此,我可以有一个事件数据框(其中C是角落,G是目标,R是红牌),如下所示:

events <- data.frame(
            game_id = c(1,   1,   1,   1,   1,   1,   2,   2,   2,   2,   2,   2,   2),
            team    = c(1,   1,   2,   1,   2,   2,   1,   1,   2,   2,   2,   1,   1),
            event_id= c('C', 'C', 'C', 'G', 'C', 'R', 'C', 'C', 'C', 'C', 'G', 'G', 'C'),
            time    = c(5,   14,   27,  67,  78,  87, 10,  19,  33,  45,  60,  78,  89))

以及每个事件的另一个时间数据框,如下所示:

eventTime <- data.frame(
             game_id = c(1, 2),
             time    = c(45, 65))

因此,对于第1场比赛,我想计算第45分钟之前每支球队的每项赛事的数量,对于第2场比赛,我想做同样的事情,但对于第60分钟,我想做的是,返回类似以下内容:

game_id time t1_C t1_G t1_R t2_C t2_G t2_R
    1    45   2    0     0   1    0     0
    2    65   2    0     0   2    1     0

由于在第1场比赛中,第1队在第45分钟之前有2个角,0个进球和0个红牌,而第2队有1个角,0个进球和0个红牌。

我一直通过使用apply来遍历和子集我要处理的数据并计算行数来完成此操作,但是我有1000的行数,这需要很多时间。

有谁知道最快的方法吗?

编辑:我没有提到任何event_id可能多次出现在eventTime数据帧中的时间不同。例如game_id可能出现两次,分别是时间45和70,我想为每个唯一的事件/时间组合获取适当的计数。

用户名

多亏了你们两个,我想您的两个答案都可以回答我的第一个问题,但对已编辑的问题却不太有用。但是,我结合了您的两个答案中的一部分,以获得对我有用的东西。

我使用了Ben Bolkers的第一部分答案,方法是合并数据帧并在时间小于stopTime的地方设置子集。然后转换为数据表,并使用Coderemifa的答案的最后两行。所以如下

library(reshape)
library(reshape2)
library(plyr)
names(eventTime)[2] <- "stopTime"
events <- merge(events,eventTime)
e2 <- subset(events,time<stopTime)
eventsSubset <- data.table(e2)
eventsSubset <- eventsSubset[,list(Freq = .N), by=c('team','event_id','game_id','stopTime')]
eventsReshaped <- cast(eventsSubset, game_id + stopTime~ event_id+team, fun.aggregate = sum, value = "Freq")

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

遍历一系列项目的更好方法

来自分类Dev

如何检查另一个列表中是否存在包含一系列项目的列表

来自分类Dev

使用MongoDB更新一系列项目

来自分类Dev

如何引用python列表中的一系列项目?

来自分类Dev

在一系列Python中使用lambda删除特定时间以下的单词出现

来自分类Dev

红宝石优雅地将一系列项目包装到一个对象中

来自分类Dev

计算Python中一系列关键事件之间的时间

来自分类Dev

使用Sequelize在一系列项目上创建/更新

来自分类Dev

切片词典列表以保留一系列项目

来自分类Dev

Javascript正则表达式仅返回一系列项目

来自分类Dev

根据一系列连续的时间数据(R)计算日期

来自分类Dev

在特定时间每分钟使用Systemd计时器(使用一系列值)

来自分类Dev

如何从一系列事件中创建日历?

来自分类Dev

如何使用C ++ 03有效地将一系列项目插入中间的std :: deque中?

来自分类Dev

jQuery-选择一系列项目,除非它具有一个类

来自分类Dev

如何快速计算R中的日期是否低于一系列截止值?

来自分类Dev

通过条件和R中的相关结果生成一系列时间戳记

来自分类Dev

从特定 wiki 文章中获取一系列链接

来自分类Dev

MSSQL:确定时间序列中一系列不变的(平线)值

来自分类Dev

计算一系列线段的长度

来自分类Dev

如何在Microsft Word中的一系列特定格式的文本之前插入换行符?

来自分类Dev

Grep用于R中的一系列数字

来自分类Dev

在R中创建一系列连接矩阵

来自分类Dev

在R中绘制一系列圆

来自分类Dev

在R中循环执行一系列步骤

来自分类Dev

在R中抓取一系列URL

来自分类Dev

重塑R中的一系列重复数据

来自分类Dev

在R中绘制一系列数据

来自分类Dev

熊猫行中一系列零之前和之后的事件百分比

Related 相关文章

  1. 1

    遍历一系列项目的更好方法

  2. 2

    如何检查另一个列表中是否存在包含一系列项目的列表

  3. 3

    使用MongoDB更新一系列项目

  4. 4

    如何引用python列表中的一系列项目?

  5. 5

    在一系列Python中使用lambda删除特定时间以下的单词出现

  6. 6

    红宝石优雅地将一系列项目包装到一个对象中

  7. 7

    计算Python中一系列关键事件之间的时间

  8. 8

    使用Sequelize在一系列项目上创建/更新

  9. 9

    切片词典列表以保留一系列项目

  10. 10

    Javascript正则表达式仅返回一系列项目

  11. 11

    根据一系列连续的时间数据(R)计算日期

  12. 12

    在特定时间每分钟使用Systemd计时器(使用一系列值)

  13. 13

    如何从一系列事件中创建日历?

  14. 14

    如何使用C ++ 03有效地将一系列项目插入中间的std :: deque中?

  15. 15

    jQuery-选择一系列项目,除非它具有一个类

  16. 16

    如何快速计算R中的日期是否低于一系列截止值?

  17. 17

    通过条件和R中的相关结果生成一系列时间戳记

  18. 18

    从特定 wiki 文章中获取一系列链接

  19. 19

    MSSQL:确定时间序列中一系列不变的(平线)值

  20. 20

    计算一系列线段的长度

  21. 21

    如何在Microsft Word中的一系列特定格式的文本之前插入换行符?

  22. 22

    Grep用于R中的一系列数字

  23. 23

    在R中创建一系列连接矩阵

  24. 24

    在R中绘制一系列圆

  25. 25

    在R中循环执行一系列步骤

  26. 26

    在R中抓取一系列URL

  27. 27

    重塑R中的一系列重复数据

  28. 28

    在R中绘制一系列数据

  29. 29

    熊猫行中一系列零之前和之后的事件百分比

热门标签

归档