Вы можете использовать spread
от tidyr:
library(tidyr)
spread(df, Group_2, count, fill = 0)
#> # A tibble: 3 x 4
#> Group_1 aa ab ac
#> <chr> <dbl> <dbl> <dbl>
#> 1 a 1 0 0
#> 2 b 0 6 0
#> 3 c 0 0 7
Данные
df <- tibble::tribble(~Group_1, ~Group_2, ~count,
"a", "aa", 1,
"b", "ab", 6,
"c", "ac", 7)
По второму вопросу вы можете свернуть полученный data.frame, используя summarise_all
или summarise_at
:
df2 %>%
group_by(Group_1) %>%
summarise_at(c("aa", "ab", "ac"), sum)
#> # A tibble: 2 x 4
#> Group_1 aa ab ac
#> <fct> <int> <int> <int>
#> 1 a 3 4 7
#> 2 b 3 6 5