Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- library(tidyverse)
- set.seed(001)
- data1 <- tibble(group = rep(c("a", "b"), each = 4),
- init = rpois(8, 10)) %>%
- group_by(group, init) %>%
- expand(change = seq(2, 6, 2)) %>%
- mutate(sd_change = 2)
- as_tibble(data1)
- > data1
- # A tibble: 24 x 4
- # Groups: group, init [8]
- group init change sd_change
- <chr> <int> <dbl> <dbl>
- 1 a 7 2 2
- 2 a 7 4 2
- 3 a 7 6 2
- 4 a 8 2 2
- 5 a 8 4 2
- 6 a 8 6 2
- 7 a 10 2 2
- 8 a 10 4 2
- 9 a 10 6 2
- 10 a 11 2 2
- # ... with 14 more rows
- data2a <- data1 %>%
- rowwise %>%
- mutate(final = rnorm(1, change, sd_change) + init) %>%
- ungroup
- data2a %>%
- group_by(group, change) %>%
- summarise(mu_start = mean(init), mu_end = mean(final),
- v_start = var(init), v_end = var(final))
- # A tibble: 6 x 6
- # Groups: group [2]
- group change mu_start mu_end v_start v_end
- <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
- 1 a 2 9 10.9 3.33 13.9
- 2 a 4 9 14.7 3.33 4.90
- 3 a 6 9 15.5 3.33 10.2
- 4 b 2 11.5 13.2 4.33 3.69
- 5 b 4 11.5 14.8 4.33 17.8
- 6 b 6 11.5 17.7 4.33 9.77
- # function to generate final values where R = 3
- f <- function(n=3, x, y, z){
- out <- rnorm(n, x, y)
- out <- out + z
- }
- data2b <- data1 %>%
- mutate(final = pmap(list(z = init,
- x = change,
- y = sd_change),
- f)) %>%
- ungroup
- as_tibble(data2b)
- # A tibble: 24 x 5
- group init change sd_change final
- <chr> <int> <dbl> <dbl> <list>
- 1 a 7 2 2 <dbl [3]>
- 2 a 7 4 2 <dbl [3]>
- 3 a 7 6 2 <dbl [3]>
- 4 a 8 2 2 <dbl [3]>
- 5 a 8 4 2 <dbl [3]>
- 6 a 8 6 2 <dbl [3]>
- 7 a 10 2 2 <dbl [3]>
- 8 a 10 4 2 <dbl [3]>
- 9 a 10 6 2 <dbl [3]>
- 10 a 11 2 2 <dbl [3]>
- # ... with 14 more rows
- data2b %>%
- split(.$group, .$change) %>%
- mutate(mu_end = map(final, mean),
- v_end = map(final, var)
- Error in UseMethod("mutate_") :
- no applicable method for 'mutate_' applied to an object of class "list"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement