R语言 如何使用咕噜声来模拟数据?

cygmwpex  于 2022-12-20  发布在  其他
关注(0)|答案(2)|浏览(89)

我有一张table看起来差不多像这样:
| x| Y型|
| - ------|- ------|
| 1个|五个|
| 第二章|七点五|
| 三个|十二点七|
现在我想取每个y,并将其作为rnorm()的平均值,使用任何变量生成,比如说,100个值。我想对每个x都这样做。最后,我想有一个新的表,基本上与上面相同,但y和x中生成的数字显示y属于1、2还是3。我知道这对purrr是可能的。但我从没做过。
希望有人能帮忙。
干杯
我的实际 Dataframe 要长得多,所以手工完成所有操作并在以后将它们连接在一起没有多大意义。

pgky5nke

pgky5nke1#

您可以在y上执行map(),然后取消嵌套:

library(tidyverse)

# original data
d <- tibble(x = c(1, 2, 3), y = c(5, 7.5, 12.7))

d |> 
  mutate(y = map(y, rnorm, n = 100)) |> 
  unnest(y)
#> # A tibble: 300 × 2
#>        x     y
#>    <dbl> <dbl>
#>  1     1  3.32
#>  2     1  3.78
#>  3     1  4.26
#>  4     1  4.03
#>  5     1  5.89
#>  6     1  5.31
#>  7     1  3.57
#>  8     1  2.64
#>  9     1  4.10
#> 10     1  5.60
#> # … with 290 more rows

创建于2022年12月15日,使用reprex v2.0.2

2g32fytz

2g32fytz2#

上面的答案行不通;看起来map()取第一个值并用它生成三个数据集。
所以现在这个对我很有效:

d <- tibble(x = c(1, 2, 3), y = c(5, 7.5, 12.7)) %>%
mutate(y = map(y, ~rnorm(100, .x, 2))) %>% 
unnest(y)

相关问题