Repeat vector when its length is not a multiple of desired total length

前端 未结 2 1352
-上瘾入骨i
-上瘾入骨i 2020-12-03 20:15

I have a data frame with 1666 rows. I would like to add a column with a repeating sequence of 1:5 to use with cut() to do cross validation. It wo

相关标签:
2条回答
  • 2020-12-03 21:01

    Use the length.out argument of rep().

    Here is an example using the built-in dataset cars.

    str(cars)
    'data.frame':   50 obs. of  2 variables:
     $ speed: num  4 4 7 7 8 9 10 10 10 11 ...
     $ dist : num  2 10 4 22 16 10 18 26 34 17 ...
    

    Add grouping column:

    cars$group <- rep(1:3, length.out=50)
    

    Inspect the result:

    head(cars)
      speed dist group
    1     4    2     1
    2     4   10     2
    3     7    4     3
    4     7   22     1
    5     8   16     2
    6     9   10     3
    
    tail(cars)
       speed dist group
    45    23   54     3
    46    24   70     1
    47    24   92     2
    48    24   93     3
    49    24  120     1
    50    25   85     2
    
    0 讨论(0)
  • 2020-12-03 21:05

    Something, like this?

    df <- data.frame(rnorm(1666))
    df$cutter <- rep(1:5, length.out=1666)
    
    tail(df)
         rnorm.1666. cutter
    1661  0.11693169      1
    1662 -1.12508091      2
    1663  0.25441847      3
    1664 -0.06045037      4
    1665 -0.17242921      5
    1666 -0.85366242      1
    
    0 讨论(0)
提交回复
热议问题