Проблема в том, что вы не можете комбинировать строки с разными именами столбцов, так что в итоге получается запутанный кадр данных. Вместо этого мы можем использовать gather()
, чтобы создать два новых столбца и получить правильную таблицу.
library(tidyverse)
library(ISLR)
data(Hitters)
Hitters <- na.omit(Hitters)
Q <- Hitters %>% group_by(League) %>%
dplyr::summarize(count = n(), avg_wage = sum(Salary)/n())
A <- Hitters %>% group_by(Division) %>%
dplyr::summarize(count = n(), avg_wage = sum(Salary)/n())
Z <- Hitters %>% group_by(NewLeague) %>%
dplyr::summarize(count = n(), avg_wage = sum(Salary)/n())
list(Q,A,Z) %>%
map_df(bind_rows) %>%
gather("league_type", "league_id", c(1, 4, 5)) %>%
filter(!is.na(league_id))
#> Warning: attributes are not identical across measure variables;
#> they will be dropped
#> # A tibble: 6 x 4
#> count avg_wage league_type league_id
#> <int> <dbl> <chr> <chr>
#> 1 139 542. League A
#> 2 124 529. League N
#> 3 129 624. Division E
#> 4 134 451. Division W
#> 5 141 537. NewLeague A
#> 6 122 535. NewLeague N
Создано в 2019-01-21 пакетом Представить (v0.2.1)
Вы можете использовать spread()
, чтобы вернуть его в широкоформатный формат, хотя я бы посоветовал против этого. С длинной версией, вероятно, будет легче работать.