ggplot,带误差条的条形图:两个二进制列和一个分类列

ggplot, barplot with error bar: two binary columns and one categorical

亲爱的 Whosebug 会员,

我有一个包含以下内容的数据集:一列 lang 包含五种不同的语言。另外两列 CANINT 包含 (0, 1)。可以看到数据here

我想为每种语言绘制两个条形图,一个用于 CAN== 0,另一个用于 CAN==1。 y 轴应该是 INT(或 INT==1)的行数。我希望这些条上有错误条。一些 post 建议使用 melt() 以便将格式转换为长格式。但是,这不起作用,因为我的数据是连续的。

更新

我昨晚看了stat_summary,也许有用,但我做不到。所以我仍然认为 geom_errorbar 是要走的路,正如最初建议的那样。

首先,为了计算CI我写了一个函数。可能有一个内置的,但我不知道。

BinCI <- function(x) {
     p <- mean(x)
     s <- sqrt(p * (1 - p) / length(x))
     i <- s * 2
     i
}

第二次数据操作:

df2 <- unite(df, uLang, c(Lang, CAN), remove = FALSE) %>%  # Create the groups
     group_by(Lang, uLang) %>%
     summarize(prop = mean(INT), ci = BinCI(INT))  # Calculate the mean and CI using the `BinCI` function


Lang  uLang       prop         ci
Ar    Ar_0    0.07200000   0.04623972
Ar    Ar_1    0.44406780   0.05785682
Kic   Kic_0   0.16000000   0.06558048
Kic   Kic_1   0.44745763   0.05789989
Sp    Sp_0    0.04968944   0.03425168
Sp    Sp_1    0.24390244   0.04742311
Yuc   Yuc_0   0.16800000   0.06687923
Yuc   Yuc_1   0.40780142   0.05852797
Zap   Zap_0   0.15151515   0.06241559
Zap   Zap_1   0.26785714   0.04831810

三、剧情:

ggplot(df2, aes(uLang, prop, fill = Lang)) +
     geom_col() +
     geom_errorbar(aes(ymin = prop - ci, ymax = prop + ci), width = 0.3) +
     guides(fill = FALSE)