首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将多个列组合在一起并绘制条形图?

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

Stack Overflow用户
提问于 2020-06-10 10:14:37
回答 1查看 138关注 0票数 1

我有一个使用splitstackshape包分割的数据框架。拆分后,我无法继续对多列进行分组并绘制条形图。代码如下,

代码语言:javascript
复制
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

输出如下,

代码语言:javascript
复制
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>

有了上述输出,我希望绘制一个条形图,其中包含各国的频率降序。示例输出如下,按下降顺序显示国家频率的条形图

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-10 10:20:16

如下所示:

代码语言:javascript
复制
library(tidyverse)
library(ggplot2)

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

根据评论编辑:只列出10个最常见的国家:

代码语言:javascript
复制
df %>% 
  separate_rows(countries, sep = ",") %>% 
  count(countries) %>% 
  slice_max(n, n = 10) %>% 
  ggplot(aes(y = fct_reorder(countries, n), x = n)) +
  geom_col()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62301074

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档