【问题标题】:How to Barplot Grouped Contingency Tables如何对分组列联表进行条形图
【发布时间】:2017-06-11 21:30:40
【问题描述】:

我正在使用名为 UCBAdmissions 的 R 内置数据集之一,并尝试创建一个分组条形图,其中数据被强制到数据框并由 AdmitGenderDept 分组(不使用ggplot)。

data(UCBAdmissions)
as.data.frame(UCBAdmissions)
      Admit Gender Dept Freq
1  Admitted   Male    A  512
2  Rejected   Male    A  313
3  Admitted Female    A   89
4  Rejected Female    A   19
5  Admitted   Male    B  353
6  Rejected   Male    B  207
7  Admitted Female    B   17
8  Rejected Female    B    8
9  Admitted   Male    C  120
10 Rejected   Male    C  205
11 Admitted Female    C  202
12 Rejected Female    C  391
13 Admitted   Male    D  138
14 Rejected   Male    D  279
15 Admitted Female    D  131
16 Rejected Female    D  244
17 Admitted   Male    E   53
18 Rejected   Male    E  138
19 Admitted Female    E   94
20 Rejected Female    E  299
21 Admitted   Male    F   22
22 Rejected   Male    F  351
23 Admitted Female    F   24
24 Rejected Female    F  317

我尝试以这种方式将数据转换为表格格式,但收到错误消息。

> barplot(table(as.data.frame(UCBAdmissions)))
Error in barplot.default(table(as.data.frame(UCBAdmissions))) : 
  'height' must be a vector or a matrix

我发现这个 SO 链接提供了非 ggplot 答案,但收到了上面显示的错误消息。

还有这个SO 链接,但数据的结构不同。

我希望数据可以只显示二维。这是简化的分组条形图的样子。

【问题讨论】:

    标签: r grouping bar-chart


    【解决方案1】:

    我不完全确定你想要达到什么目标,但我假设你想要按部门分组的条形图,并且图例是 Gender 和 Admit 的组合(只是为了给出想法)。

    在您指向的条形图示例中,数据是一个纯数字矩阵,其中行名和列名设置为标签和分组。您需要首先转换您的数据(我使用来自tidyversedplyrtidyr):

    library(tidyverse)
    df2 = group_by(as.data.frame(UCBAdmissions), Dept, Gender, Admit) %>% 
        summarise(Freq = sum(Freq)) %>%
        ungroup() %>%
        mutate(GA = paste(Gender, Admit)) %>%
        select(Dept, GA, Freq) %>%
        spread(key = Dept, value = Freq) %>%
        as.data.frame()
    rownames(df2) = df2$GA
    df2 = as.matrix(select(df2, -GA))
    

    现在您的数据采用了 barplot 可以使用的形式:

    barplot(df2, beside=TRUE, legend = rownames(df2))
    

    【讨论】:

      猜你喜欢
      • 2020-09-01
      • 2020-05-12
      • 1970-01-01
      • 2019-03-10
      • 1970-01-01
      • 1970-01-01
      • 2021-10-14
      相关资源
      最近更新 更多