【发布时间】:2016-04-01 19:55:57
【问题描述】:
我有一个这样的数据表:
ID Type
1 I
1 A
1 A
2 I
2 A
2 I
2 C
2 I
2 I
我想添加如下的列序列:
ID Type Seq
1 I 1
1 A 1
1 A 1
2 I 1
2 A 1
2 I 2
2 C 2
2 I 3
2 I 4
逻辑是:
Seq = previous_row_for_user_where_I_occurs +1,当 Type=I
Seq = 用户上一次出现的 I,当 Type=A 或 C
所以基本上,对于给定的用户编号,所有 I 的出现都是按顺序出现的。如果 A 或 C 出现在两者之间,则将其分配给它之前出现的 I 的值。 ID 已使用日期字段进行排序。
我也参考了以下内容,但它没有帮助,因为如果“A”为用户出现两次,则第二次出现的编号不正确。
Assigning values in a sequence depending on previous row in R
我现在使用 for 循环,因为我有 1000 万行,所以需要几个小时。
【问题讨论】:
-
第一个数据表中缺少
Type列。此外,您的逻辑对于随后的重复也不清楚。随着更多倍数的出现,计数会与 3,4,... 一致吗? -
我在原问题中做了修改。
标签: r