gpt4 book ai didi

r - 根据R中的时间差创建行索引

转载 作者:行者123 更新时间:2023-12-02 15:17:14 24 4
gpt4 key购买 nike

我的数据如下所示:

player  event  diff
A x NA
A y 2
A z 240
A w 3
A x 9
B x NA
B y 3
B z 120
C x NA
C x 8

我所做的是按玩家列分组并计算时间事件之间的差异,因此每当新玩家有事件时,NA 代表差异列。

我想要做的是将数据划分为玩家特定的交互,这些交互在彼此之间的几分钟内(比如 diff = 20 的截止值)。我最终想要的是:

     player  event  diff   interaction
A x NA 1
A y 2 1
A z 240 2
A w 3 2
A x 9 2
B x NA 1
B y 3 1
B z 120 2
C x NA 1
C x 8 1

所以基本上,交互是根据具有相同玩家且差异小于 20 进行分组的,否则将开始新的交互。如果存在 NA,也会开始新的交互。我不太确定如何以快速/高效的方式执行此操作,因为我有一个包含许多玩家的大型数据集。我更喜欢 dplyr 解决方案

最佳答案

您可以使用 diff 列中的 coalesce 将 NA 替换为 0(或其他低于阈值的数字),并在 diff >= 20 条件下执行 cumsum ,每当 diff 超过某个阈值时,它将给出一个不同的 id:

library(dplyr)
df %>% group_by(player) %>%
mutate(interaction = cumsum(coalesce(diff, 0L) >= 20) + 1)

# Source: local data frame [10 x 4]
# Groups: player [3]

# player event diff interaction
# <fctr> <fctr> <int> <dbl>
# 1 A x NA 1
# 2 A y 2 1
# 3 A z 240 2
# 4 A w 3 2
# 5 A x 9 2
# 6 B x NA 1
# 7 B y 3 1
# 8 B z 120 2
# 9 C x NA 1
# 10 C x 8 1

关于r - 根据R中的时间差创建行索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39553152/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com