带条件的数字序列

Kha*_*idN -1 sequences r sequence dataframe dplyr

我有一个很大的data.frame,我想生成一个新的列(称为Seq),它有一个顺序值,每次不同的列发生更改时重新启动.下面是data.frame(带有省略的列)和名为Seq的新列的示例.正如您所看到的那样,有一个sequentiel计数,但每次有新的IDPath时,sequentiel计数都会重新开始.sequentiel长度可以有不同的长度,有些是1长,而其他是300.

IDPath    LogTime               Seq
AADS      19-06-2015 01:57      1
AADS      19-06-2015 01:55      2
AADS      19-06-2015 01:54      3
AADS      19-06-2015 01:53      4
DHSD      19-06-2015 12:57      1
DHSD      19-06-2015 10:58      2
DHSD      19-06-2015 09:08      3
DHSD      19-06-2015 08:41      4
Run Code Online (Sandbox Code Playgroud)

Cat*_*ath 5

使用data.table包,这里有一种获得你想要的方法:

require(data.table)
setDT(dt)[, Seq:=1:.N, by=IDPath]
# or, as mentioned by @DavidArenburg
setDT(dt)[, Seq:=seq_len(.N), by=IDPath]

dt
#   IDPath          LogTime Seq
#1:   AADS 19-06-2015 01:57   1
#2:   AADS 19-06-2015 01:55   2
#3:   AADS 19-06-2015 01:54   3
#4:   AADS 19-06-2015 01:53   4
#5:   DHSD 19-06-2015 12:57   1
#6:   DHSD 19-06-2015 10:58   2
#7:   DHSD 19-06-2015 09:08   3
#8:   DHSD 19-06-2015 08:41   4
Run Code Online (Sandbox Code Playgroud)

  • `seq_len(.N)` 可能会比 `:` 快一点 (2认同)