如何将多列组合在一起并绘制条形图?

问题描述 投票:0回答:1

我有一个数据框,我已经使用 splitstackshape 包。拆分后我无法继续进行多列分组和绘制柱状图。代码如下。

library(tidyverse)
library(splitstackshape)
df <- data.frame(countries=(c("England","Australia,Pakistan", "India,England","Denmark", "",
                             "Australia, Pakistan, New Zealand, England", "United States, England,Pakistan")))
data_split <- splitstackshape::cSplit(df, "countries", ",")
data_split

输出结果如下:

countries_1       countries_2 countries_3     countries_4
1:       England        <NA>        <NA>        <NA>
2:     Australia    Pakistan        <NA>        <NA>
3:         India     England        <NA>        <NA>
4:       Denmark        <NA>        <NA>        <NA>
5:          <NA>        <NA>        <NA>        <NA>
6:     Australia    Pakistan New Zealand     England
7: United States     England    Pakistan        <NA>

我想用上述输出绘制一个条形图,其中包含按降序排列的国家的频率。输出示例如下:国家频度降序条形图

r ggplot2 grouping bar-chart multiple-columns
1个回答
0
投票

像这样。

library(tidyverse)
library(ggplot2)

df %>% 
  separate_rows(countries, sep = ",") %>% 
  count(countries) %>% 
  ggplot(aes(y = fct_reorder(countries, n), x = n)) +
  geom_col()

enter image description here


根据评论编辑:只绘制10个最常见的国家。

df %>% 
  separate_rows(countries, sep = ",") %>% 
  count(countries) %>% 
  slice_max(n, n = 10) %>% 
  ggplot(aes(y = fct_reorder(countries, n), x = n)) +
  geom_col()
© www.soinside.com 2019 - 2024. All rights reserved.