基于个人排名的组ID

时间:2018-12-04 16:05:14

标签: r uniqueidentifier

我有以下个人数据,并且想要创建一个唯一的家庭标识符。每个人在家庭中已经有自己的排名,因此基本上排名1标志着新家庭的开始。 例如

rank name
1    John
2    Lisa
3    Stu
1    Phil
1    Mike
1    Florence
2    George
3    David
4    Diana
1    Eleanor

我正在寻找的结果是:

rank name      id
1    John      1
2    Lisa      1
3    Stu       1
1    Phil      2
1    Mike      3
1    Florence  4
2    George    4
3    David     4
4    Diana     4
1    Eleanor   5

大约有320 000个人,因此组ID应该从1到sum(df $ rank [rank = 1])或类似的值。任何其他类型的唯一ID也可以使用,不必是seq(1,n,1)。

1 个答案:

答案 0 :(得分:1)

<Button text="Tap me" (tap)="onTap($event)"></Button>

正如@Andre Elrico所指出的,如果任何行的df$id <- cumsum(df$rank == 1) # rank name id # 1 1 John 1 # 2 2 Lisa 1 # 3 3 Stu 1 # 4 1 Phil 2 # 5 1 Mike 3 # 6 1 Florence 4 # 7 2 George 4 # 8 3 David 4 # 9 4 Diana 4 # 10 1 Eleanor 5 rank,则上述方法将在随后的所有行中为NA提供NA如果您知道id可能是rank(而不是应该为1的情况),请改用下面的选项。

NA

使用的数据:

df$id <- cumsum(df$rank %in% 1)