R 每次满足条件时递增ID号
我有一个数据集,我正试图根据条件将其分块成“事件”。我想创建一个连续的组号(ID),它在每次满足条件时都会增加 某些类型的记录表示新事件已开始,而其他类型的记录表示没有改变/保持过程 例如,在此数据集中,每当“Action”为“Left”或“Right”时,一个新事件已启动,“Id”应递增1:R 每次满足条件时递增ID号,r,R,我有一个数据集,我正试图根据条件将其分块成“事件”。我想创建一个连续的组号(ID),它在每次满足条件时都会增加 某些类型的记录表示新事件已开始,而其他类型的记录表示没有改变/保持过程 例如,在此数据集中,每当“Action”为“Left”或“Right”时,一个新事件已启动,“Id”应递增1: | Id | Action | |-----+---------| | 1 | Left | | 2 | Forward | | 3 | Forward | | 4 | Righ
| 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循环(伪ish代码)来实现这一点:
我觉得这应该是一个非常简单的一行,但我的大脑现在已经崩溃了,我很难理解这一点。
GroupId=cumsum(动作%in%c(“左”、“右”))
好吧,见鬼。太快了。太快了,我不得不再等四分钟才接受这个答案!工作完美。
GroupID = 1
for row in data:
if Action == "Left" OR Action == "Right":
GroupID = GroupID + 1
else:
GroupID = GroupID