假设我们的数据框是mtcars[, c("vs", "am")]
. 我想要一个具有 2 列的百分比堆积条形图/条形图,一个用于vs
,另一个用于am
,每个具有 2 个组,==1
并且==0
,但以这样一种方式拆分,即查看 2 列我会观察到 4 个组。让我们来看看:
library(dplyr)
mtcars %>% select(vs, am) %>% sjmisc::frq(interaction(vs,am))
interaction(vs, am) <categorical>
# total N=32 valid N=32 mean=0.48 sd=0.51
Value | N | Raw % | Valid % | Cum. %
-------------------------------------
0.00 | 12 | 37.50 | 37.50 | 37.50
0.10 | 6 | 18.75 | 18.75 | 78.12
1.00 | 7 | 21.88 | 21.88 | 59.38
1.10 | 7 | 21.88 | 21.88 | 100.00
<NA> | 0 | 0.00 | <NA> | <NA>
将有一个水平部分,其中两列的组均为 1,对应于 21.88%。另一个水平部分,vs==1
但am==0
将是另一个 21.88%。将有对应于 18.75% 的第三部分,其中vs==0
和am==1
最后一个水平部分,两列中的组均为 0,百分比为 37.5%。在 y 轴上将指示累积 N 或累积百分比。
它是某种方式ggplot
或任何扩展名(可能像ggmosaic
或ComplexUpset
)?
谢谢!
PS:问题来自函数stablelearner::image
,但它是用base R实现的,我不知道如何翻译它。