生成少于列值的随机数

有没有一种方法可以填充小于另一列中的值的随机数

df
ColA
12
324
45
546

预期的输出(ColB应小于COlA中的值)

df
ColA     ColB
12        10
324       150
45         20
546        400
评论
  • 环嘉玉
    环嘉玉 回复

    One dplyr option could be:

    set.seed(123)
    
    df %>%
     rowwise() %>%
     mutate(ColB = sample(1:ColA, 1))
    
       ColA  ColB
      <int> <int>
    1    12     4
    2   324   256
    3    45    19
    4   546   483
    
  • yquo
    yquo 回复

    A vectorized base R solution might be using runif, i.e.,

    df <- within(df,ColB <- trunc(runif(nrow(df))*ColA))
    

    set.seed(1)
    df <- within(df,ColB <- trunc(runif(nrow(df))*ColA))
    
    > df
      ColA ColB
    1   12    3
    2  324  120
    3   45   25
    4  546  495