【发布时间】:2020-08-08 05:54:37
【问题描述】:
有没有办法填充小于另一列中的值的随机数
例子
df
ColA
12
324
45
546
预期输出(ColB 应小于 COlA 中的值)
df
ColA ColB
12 10
324 150
45 20
546 400
【问题讨论】:
标签: r
有没有办法填充小于另一列中的值的随机数
例子
df
ColA
12
324
45
546
预期输出(ColB 应小于 COlA 中的值)
df
ColA ColB
12 10
324 150
45 20
546 400
【问题讨论】:
标签: r
矢量化的基础 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
【讨论】:
一个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
【讨论】:
我们可以使用map
library(dplyr)
library(purrr)
df %>%
mutate(ColB = map_int(ColA, ~ sample(seq_len(.x), 1)))
【讨论】: