Есть ли способ заполнить случайные числа меньше значений в другом столбце
Пример
df ColA 12 324 45 546
Ожидаемый результат (ColB должно быть меньше значений в COlA)
df ColA ColB 12 10 324 150 45 20 546 400
В векторизованном базовом R-решении может использоваться runif, т. Е.
runif
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
Мы можем использовать map
map
library(dplyr) library(purrr) df %>% mutate(ColB = map_int(ColA, ~ sample(seq_len(.x), 1)))
Один dplyr параметр может быть:
dplyr
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