I have a data frame in which I want to add an index e.g. 1…n for each factor in my data frame. Here is an example with some dummy data.
factor
a
a
a
a
a
b
b
b
b
b
c
c
c
c
I would like to add an additional column which adds an index 1 to n for each factor separately. The resulant data frame would look like:
factor index
a 1
a 2
a 3
a 4
a 5
b 1
b 2
b 3
b 4
b 5
c 1
c 2
c 3
c 4
Can anyone explain how to do so? Thanks in advance.
One way is:
where
xis your factor as a vector.Another way, on a similar theme is to use
table()andseq_len():And another way is to use the run-length encoding via
rle():which we can plug into the
sapply()code instead of thetable()call: