【问题标题】:Incrementing an ID number each time a condition is met每次满足条件时增加一个 ID 号
【发布时间】:2012-01-20 02:43:54
【问题描述】:

我有一个数据集,我正试图根据条件将其分成“事件”。我想创建一个连续的组号(ID),每次满足条件时都会增加。

某些类型的记录表明新事件已经开始,而其他类型的记录表示没有变化/保持不变。

例如,在此数据集中,只要“Action”为“Left”或“Right”,则新事件已开始,“Id”应增加 1:

|  Id | Action  |
|-----+---------|
|   1 | Left    |
|   2 | Forward |
|   3 | Forward |
|   4 | Right   |
|   5 | Forward |
|   6 | Left    |
| ... | ...     |

我想要的结果表如下所示:

|  Id | Action  | GroupId |
|-----+---------+---------|
|   1 | Left    |       1 |
|   2 | Forward |       1 |
|   3 | Forward |       1 |
|   4 | Right   |       2 |
|   5 | Forward |       2 |
|   6 | Left    |       3 |
| ... | ...     |     ... |

在 python 之类的东西中,我可以用一个计数器和一个 for 循环(伪代码)来做到这一点:

GroupID = 1
for row in data:
    if Action == "Left" OR Action == "Right":
        GroupID = GroupID + 1
    else:
        GroupID = GroupID

我觉得这应该是一个非常简单的单线,但我现在脑子坏了,我很难概念化这个。

【问题讨论】:

    标签: r


    【解决方案1】:

    GroupId = cumsum(Action %in% c("Left", "Right"))

    【讨论】:

    • 好吧,见鬼。那很快。太快了,我不得不再等四分钟才能接受这个答案!完美运行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-09-28
    • 2016-09-25
    • 1970-01-01
    • 2021-08-25
    • 1970-01-01
    • 2020-12-08
    • 1970-01-01
    相关资源
    最近更新 更多