Генерация случайных чисел меньше значений столбца - PullRequest
1 голос
/ 24 апреля 2020

Есть ли способ заполнить случайные числа меньше значений в другом столбце

Пример

df
ColA
12
324
45
546

Ожидаемый результат (ColB должно быть меньше значений в COlA)

df
ColA     ColB
12        10
324       150
45         20
546        400

Ответы [ 3 ]

3 голосов
/ 24 апреля 2020

В векторизованном базовом R-решении может использоваться 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
2 голосов
/ 24 апреля 2020

Мы можем использовать map

library(dplyr)
library(purrr)
df %>%
   mutate(ColB = map_int(ColA, ~ sample(seq_len(.x), 1)))
2 голосов
/ 24 апреля 2020

Один 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...