R-ggplot2-分类数据的限制条形图输出
我试图在ggplot2中创建一个条形图,将x轴上的输出限制为最常见的10%分类变量 我的数据框架是一个包含个人贷款统计数据的数据集。我正在研究两个类别之间的关系,贷款状况和职业 首先,我想将贷款状态限制为已“冲销”的贷款。接下来,我想使用条形图绘制不同职业中已冲销的贷款数量。职业有67个唯一值-我想将绘图限制为最常见的职业(按整数或百分比,即“7”或“10%”工作) 在下面的代码中,我使用forcats函数R-ggplot2-分类数据的限制条形图输出,r,ggplot2,bar-chart,categorical-data,R,Ggplot2,Bar Chart,Categorical Data,我试图在ggplot2中创建一个条形图,将x轴上的输出限制为最常见的10%分类变量 我的数据框架是一个包含个人贷款统计数据的数据集。我正在研究两个类别之间的关系,贷款状况和职业 首先,我想将贷款状态限制为已“冲销”的贷款。接下来,我想使用条形图绘制不同职业中已冲销的贷款数量。职业有67个唯一值-我想将绘图限制为最常见的职业(按整数或百分比,即“7”或“10%”工作) 在下面的代码中,我使用forcats函数fct_informeq按频率降序排列条形图。但是,我找不到一个函数来限制x轴类别的数量。
fct_informeq
按频率降序排列条形图。但是,我找不到一个函数来限制x轴类别的数量。我曾尝试过分位数
,尺度(scale)x(u离散)
)等,但这些似乎对分类数据不起作用
谢谢你的帮助
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-h)*qs[i]中的错误:二进制运算符的非数值参数
更新:
使用下面Yifu的答案,我能够得到如下所示的期望输出:
pd_occupation <- pd %>%
dplyr::filter(LoanStatus == "Chargedoff") %>%
group_by(Occupation) %>%
mutate(group_num = n())
table(pd_occupation$group_num)#to view the distribution
ggplot(subset(pd_occupation, group_num >= 361)) +
geom_bar(aes(fct_infreq(Occupation)), stat = 'count') +
ggtitle('Loan Charge-Offs by Occupation')
pd_职业百分比
dplyr::筛选器(LoanStatus==“Chargedoff”)%>%
组别(职业)%>%
变异(group_num=n())
表(pd_职业$group#num)#查看分布情况
ggplot(子集(pd_职业,组数>=361))+
geom_bar(aes(fct_INFOREQ(职业)),统计=‘计数’)+
ggtitle(“按职业划分的贷款冲销”)
您可以在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
中的数据。请提供一个具有可复制数据的示例,也许您可以通过forcats::fct_lump
将因子水平进行分类,然后在进行分类之前将其子集到非“其他”类别?