我总结了一个按两个变量分组的数据集。我最近学会了如何根据主要分组变量的总计数重新排序条形图。我现在想生成一个重新排序的数据表,以匹配重新排序的条形图。这就是我对条形图的看法:
library(magrittr)
library(dplyr)
df <- mtcars
df$gear <- as.factor(df$gear)
df$carb <- as.factor(df$carb)
car_summary <- df %>% group_by(carb, gear) %>% summarize(Count = n())
ggplot(data = car_summary, aes(x = reorder(carb, Count, sum), y = Count, fill = gear)) +
geom_col() + coord_flip() + labs(x = "carb", y = "Count")
如果我然后尝试生成一个表来汇总数据,就像生成绘图一样:
summary_table <- df %>% group_by(carb, gear) %>% summarize(Count = n())
summary_table
然而,这给了我以下输出:
> summary_table
# A tibble: 11 x 3
# Groups: carb [?]
carb gear Count
<fct> <fct> <int>
1 1 3 3
2 1 4 4
3 2 3 4
4 2 4 4
5 2 5 2
6 3 3 3
7 4 3 5
8 4 4 4
9 4 5 1
10 6 5 1
11 8 5 1
我希望看到的是订购的行,以便carb
变量的组按其所有gear
变量的总和顺序列出。当我使用reorder(carb, Count, sum)
语句时,这就是我的条形图输出。
我希望我的summary_table
看起来像这样:
> summary_table
# A tibble: 11 x 3
# Groups: carb [?]
carb gear Count
<fct> <fct> <int>
1 4 3 5
2 4 4 4
3 4 5 1
4 2 3 4
5 2 4 4
6 2 5 2
7 1 3 3
8 1 4 4
9 3 3 3
10 8 5 1
11 6 5 1
答案 0 :(得分:0)
您非常接近,您只需要在表格中订购数据! FWIW,如果你发现自己在做group(x,y) %>% summarize(count = n())
,你可以使用count(df, x, y)
为自己保存一些代码。
car_summary <- count(mtcars, carb, gear)
summary_table <- car_summary %>%
group_by(carb) %>%
mutate(nn = sum(n)) %>%
arrange(desc(nn), desc(carb)) %>%
select(-nn)
ggplot(data = car_summary, aes(x = reorder(carb, n, sum), y = n, fill = gear)) +
geom_col() + coord_flip() + labs(x = "carb", y = "Count")
summary_table看起来像:
# A tibble: 11 x 3
# Groups: carb [6]
carb gear n
<dbl> <dbl> <int>
1 4.00 3.00 5
2 4.00 4.00 4
3 4.00 5.00 1
4 2.00 3.00 4
5 2.00 4.00 4
6 2.00 5.00 2
7 1.00 3.00 3
8 1.00 4.00 4
9 3.00 3.00 3
10 8.00 5.00 1
11 6.00 5.00 1