-1

I have a data frame as below:

dt: 
Time              users
14-10-2016 13:00    a
14-10-2016 13:05    b
14-10-2016 13:05    c
14-10-2016 14:20    a
14-10-2016 14:20    b
14-10-2016 14:20    a
14-10-2016 14:25    d

I want to assign serial numbers by unique Time as below:

Time              users ID
14-10-2016 13:00    a   1
14-10-2016 13:05    b   2
14-10-2016 13:05    c   2
14-10-2016 14:20    a   3
14-10-2016 14:20    b   3
14-10-2016 14:20    a   3
14-10-2016 14:25    d   4

How can i assign serial numbers in ID column?

user6559913
  • 483
  • 4
  • 7
  • 15

1 Answers1

1

We can use match

dt[, ID := match(Time, unique(Time))]

Or with .GRP after grouping by 'Time'

dt[, ID := .GRP, by = Time]
dt
#               Time users ID
#1: 14-10-2016 13:00     a  1
#2: 14-10-2016 13:05     b  2
#3: 14-10-2016 13:05     c  2
#4: 14-10-2016 14:20     a  3
#5: 14-10-2016 14:20     b  3
#6: 14-10-2016 14:20     a  3
#7: 14-10-2016 14:25     d  4
akrun
  • 874,273
  • 37
  • 540
  • 662