Search code examples
rsequencerep

Using rep/seq to create ID column


Is there an efficient way to create an ID column using rep/seq or some other function I'm not thinking of to make a sequence such as the following:

1, 2, 3, 4, 4, 5, 5, 6, 6, 7, 7, 7, 8, 8, 8, 9, 9, 9, 10, 10, 10, 10.....

So every 3 numbers the following 3 numbers get repeated an additional time. My actual data will require a sequence that is:

1:1000- 1 each

1001:2000- 2 each

2001:3000 - 3 each ....

Any ideas/help would be greatly appreciated.


Solution

  • We can use

    v2 <- 1:7000
    rep(v2, as.integer(gl(length(v2), 1000, length(v2))))
    

    For the first case

    v1 <- 1:15
    rep(v1, as.integer(gl(length(v1), 3, length(v1))))
     [1]  1  2  3  4  4  5  5  6  6  7  7  7  8  8  8  9  9  9 10 10 10 10 11 11 11 11 12 12 12 12 13 13 13 13 13 14 14 14 14 14 15 15 15 15