Readying data for sankey plot
Examples
ds <- data.frame(g = sample(LETTERS[1:2], 100, TRUE), first = REDCapCAST::as_factor(sample(letters[1:4], 100, TRUE)), last = sample(c(letters[1:4], NA), 100, TRUE, prob = c(rep(.23, 4), .08)))
ds |> sankey_ready("first", "last")
#> # A tibble: 20 × 7
#> first last n gx.sum gy.sum lx ly
#> <fct> <chr> <int> <int> <int> <fct> <fct>
#> 1 d a 5 22 17 "d\n(n=22)" "a\n(n=17)"
#> 2 d b 8 22 25 "d\n(n=22)" "b\n(n=25)"
#> 3 d c 4 22 29 "d\n(n=22)" "c\n(n=29)"
#> 4 d d 4 22 22 "d\n(n=22)" "d\n(n=22)"
#> 5 d NA 1 22 7 "d\n(n=22)" "NA\n(n=7)"
#> 6 b a 1 32 17 "b\n(n=32)" "a\n(n=17)"
#> 7 b b 11 32 25 "b\n(n=32)" "b\n(n=25)"
#> 8 b c 12 32 29 "b\n(n=32)" "c\n(n=29)"
#> 9 b d 7 32 22 "b\n(n=32)" "d\n(n=22)"
#> 10 b NA 1 32 7 "b\n(n=32)" "NA\n(n=7)"
#> 11 a a 8 23 17 "a\n(n=23)" "a\n(n=17)"
#> 12 a b 2 23 25 "a\n(n=23)" "b\n(n=25)"
#> 13 a c 7 23 29 "a\n(n=23)" "c\n(n=29)"
#> 14 a d 4 23 22 "a\n(n=23)" "d\n(n=22)"
#> 15 a NA 2 23 7 "a\n(n=23)" "NA\n(n=7)"
#> 16 c a 3 23 17 "c\n(n=23)" "a\n(n=17)"
#> 17 c b 4 23 25 "c\n(n=23)" "b\n(n=25)"
#> 18 c c 6 23 29 "c\n(n=23)" "c\n(n=29)"
#> 19 c d 7 23 22 "c\n(n=23)" "d\n(n=22)"
#> 20 c NA 3 23 7 "c\n(n=23)" "NA\n(n=7)"
ds |> sankey_ready("first", "last", numbers = "percentage")
#> # A tibble: 20 × 7
#> first last n gx.sum gy.sum lx ly
#> <fct> <chr> <int> <int> <int> <fct> <fct>
#> 1 d a 5 22 17 "d\n(22%)" "a\n(17%)"
#> 2 d b 8 22 25 "d\n(22%)" "b\n(25%)"
#> 3 d c 4 22 29 "d\n(22%)" "c\n(29%)"
#> 4 d d 4 22 22 "d\n(22%)" "d\n(22%)"
#> 5 d NA 1 22 7 "d\n(22%)" "NA\n(7%)"
#> 6 b a 1 32 17 "b\n(32%)" "a\n(17%)"
#> 7 b b 11 32 25 "b\n(32%)" "b\n(25%)"
#> 8 b c 12 32 29 "b\n(32%)" "c\n(29%)"
#> 9 b d 7 32 22 "b\n(32%)" "d\n(22%)"
#> 10 b NA 1 32 7 "b\n(32%)" "NA\n(7%)"
#> 11 a a 8 23 17 "a\n(23%)" "a\n(17%)"
#> 12 a b 2 23 25 "a\n(23%)" "b\n(25%)"
#> 13 a c 7 23 29 "a\n(23%)" "c\n(29%)"
#> 14 a d 4 23 22 "a\n(23%)" "d\n(22%)"
#> 15 a NA 2 23 7 "a\n(23%)" "NA\n(7%)"
#> 16 c a 3 23 17 "c\n(23%)" "a\n(17%)"
#> 17 c b 4 23 25 "c\n(23%)" "b\n(25%)"
#> 18 c c 6 23 29 "c\n(23%)" "c\n(29%)"
#> 19 c d 7 23 22 "c\n(23%)" "d\n(22%)"
#> 20 c NA 3 23 7 "c\n(23%)" "NA\n(7%)"