Advertisement
Guest User

Untitled

a guest
Jul 21st, 2019
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.41 KB | None | 0 0
  1. library(tidyverse)
  2.  
  3. set.seed(001)
  4. data1 <- tibble(group = rep(c("a", "b"), each = 4),
  5. init = rpois(8, 10)) %>%
  6. group_by(group, init) %>%
  7. expand(change = seq(2, 6, 2)) %>%
  8. mutate(sd_change = 2)
  9. as_tibble(data1)
  10.  
  11. > data1
  12. # A tibble: 24 x 4
  13. # Groups: group, init [8]
  14. group init change sd_change
  15. <chr> <int> <dbl> <dbl>
  16. 1 a 7 2 2
  17. 2 a 7 4 2
  18. 3 a 7 6 2
  19. 4 a 8 2 2
  20. 5 a 8 4 2
  21. 6 a 8 6 2
  22. 7 a 10 2 2
  23. 8 a 10 4 2
  24. 9 a 10 6 2
  25. 10 a 11 2 2
  26. # ... with 14 more rows
  27.  
  28. data2a <- data1 %>%
  29. rowwise %>%
  30. mutate(final = rnorm(1, change, sd_change) + init) %>%
  31. ungroup
  32.  
  33. data2a %>%
  34. group_by(group, change) %>%
  35. summarise(mu_start = mean(init), mu_end = mean(final),
  36. v_start = var(init), v_end = var(final))
  37.  
  38. # A tibble: 6 x 6
  39. # Groups: group [2]
  40. group change mu_start mu_end v_start v_end
  41. <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
  42. 1 a 2 9 10.9 3.33 13.9
  43. 2 a 4 9 14.7 3.33 4.90
  44. 3 a 6 9 15.5 3.33 10.2
  45. 4 b 2 11.5 13.2 4.33 3.69
  46. 5 b 4 11.5 14.8 4.33 17.8
  47. 6 b 6 11.5 17.7 4.33 9.77
  48.  
  49. # function to generate final values where R = 3
  50. f <- function(n=3, x, y, z){
  51. out <- rnorm(n, x, y)
  52. out <- out + z
  53. }
  54.  
  55. data2b <- data1 %>%
  56. mutate(final = pmap(list(z = init,
  57. x = change,
  58. y = sd_change),
  59. f)) %>%
  60. ungroup
  61.  
  62. as_tibble(data2b)
  63. # A tibble: 24 x 5
  64. group init change sd_change final
  65. <chr> <int> <dbl> <dbl> <list>
  66. 1 a 7 2 2 <dbl [3]>
  67. 2 a 7 4 2 <dbl [3]>
  68. 3 a 7 6 2 <dbl [3]>
  69. 4 a 8 2 2 <dbl [3]>
  70. 5 a 8 4 2 <dbl [3]>
  71. 6 a 8 6 2 <dbl [3]>
  72. 7 a 10 2 2 <dbl [3]>
  73. 8 a 10 4 2 <dbl [3]>
  74. 9 a 10 6 2 <dbl [3]>
  75. 10 a 11 2 2 <dbl [3]>
  76. # ... with 14 more rows
  77.  
  78. data2b %>%
  79. split(.$group, .$change) %>%
  80. mutate(mu_end = map(final, mean),
  81. v_end = map(final, var)
  82.  
  83. Error in UseMethod("mutate_") :
  84. no applicable method for 'mutate_' applied to an object of class "list"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement