Saya ingin membuat variabel acak menggunakan rnorm() dengan mean dan sd yang ditentukan dalam kolom terpisah di tibble

n <- 2
ti <- tibble(Name = letters[1:10], mean = 1:10, sd = 1:10)

Bagaimana cara menggunakan mutate untuk menambahkan n kolom ke tibble dengan output dari rnorm(n, mean, sd) untuk setiap baris?

(Saya tahu saya bisa melakukan ini di basis R, tetapi saya ingin tahu cara kerjanya menggunakan dplyr)

2
Lukas 18 Juni 2020, 17:42

1 menjawab

Jawaban Terbaik

Satu opsi dplyr dan tidyr dapat berupa:

ti %>%
 rowwise() %>%
 mutate(col_rnorm = list(setNames(rnorm(n, mean, sd), c("col1", "col2")))) %>%
 unnest_wider(col_rnorm)

  Name   mean    sd  col1    col2
   <chr> <int> <int> <dbl>   <dbl>
 1 a         1     1 -1.73  1.18  
 2 b         2     2  3.86  0.0943
 3 c         3     3  3.54 -0.502 
 4 d         4     4  3.21 -3.90  
 5 e         5     5  3.61  9.48  
 6 f         6     6  7.07 16.1   
 7 g         7     7 17.4   5.95  
 8 h         8     8  5.32 13.6   
 9 i         9     9 19.2  19.8   
10 j        10    10  9.67 11.3 
2
tmfmnk 18 Juni 2020, 14:48