R - ggplot2 - 限制分类数据的条形图输出

时间:2018-06-14 15:24:53

标签: r ggplot2 bar-chart categorical-data

我正在尝试在ggplot2中创建一个条形图,它将x轴上的输出限制为前10%最常见的分类变量。

我的数据框是一个包含个人贷款统计数据的数据集。我正在研究贷款状况和职业这两个类别之间的关系。

首先,我想将贷款状态限制为已经被收取的贷款。"接下来,我想绘制使用条形图在各种职业中收取多少贷款的情节。职业有67个独特的值 - 我想将情节限制为最常用的职业(按整数或百分比,即" 7"或" 10%"工作)。 / p>

在下面的代码中,我使用forcats函数setZ按频率按降序排列条形图。但是,我找不到一个限制x轴类别数量的函数。我已尝试使用fct_infreqquantile等,但这些似乎不适用于分类数据。

感谢您的帮助!

scale_x_discrete

结果错误:

  

(1 - h)中的错误* qs [i]:二元运算符的非数字参数

更新 使用Yifu的答案,我能够得到所需的输出:

df %>% filter(LoanStatus %in% c("Chargedoff")) %>% 
ggplot() +
  geom_bar(aes(fct_infreq(Occupation)), stat = 'count') +
  scale_x_discrete(limits = c(quantile(df$Occupation, 0.9), quantile(df$Occupation, 1)))

1 个答案:

答案 0 :(得分:0)

您可以在dplyr中执行此操作:

#only use cars whose carb appears more than 7 times to create a plot
mtcars %>%
    group_by(carb) %>%
    mutate(group_num = n()) %>%
    # you can substitute the number with 10% percentitle or whatever you want
    dplyr::filter(group_num >= 7) #%>%
    #ggplot()
    #create your plot

我们的想法是过滤观察结果并将其传递给ggplot,而不是过滤ggplot中的数据。