可视化双向加权频率 table

Visualizing a two-way weighted frequency table

dat <- data.frame(gender = c("F","F","F","M","F","U"), vol = c(500,750,1250,NA,300,700),weight=c(1.36,0.67,5.22,1.67,1.15,1.29))

   gender  vol weight
1      F  500   1.36
2      F  750   0.67
3      F 1250   5.22
4      M   NA   1.67
5      F  300   1.15
6      U  700   1.29

如果我们有上面的数据框并创建一个双向加权频率table:

library(questionr)
two_way <- data.frame(wtd.table(dat$gender,y=dat$vol,weights=dat$weight))

看起来像这样:

 Var1 Var2 Freq
1     F  300 1.15
2     M  300 0.00
3     U  300 0.00
4     F  500 1.36
5     M  500 0.00
6     U  500 0.00
7     F  700 0.00
8     M  700 0.00
9     U  700 1.29
10    F  750 0.67
11    M  750 0.00
12    U  750 0.00
13    F 1250 5.22
14    M 1250 0.00
15    U 1250 0.00

将其形象化的最佳方式是什么?像这样可视化加权数据时,我应该使用不同的方法吗?

Quick-R 提到:

Use the vcd package for visualizing relationships among categorical data (e.g. mosaic and association plots).

我的第一个想法是使用 ggplot2 包中的 geom_count(以前的 stat_sum)函数。使用它,您可以使用例如绘制 table x 轴上的性别和 y 轴上的体积。比频率将显示为圆圈的大小

ggplot(two_way, aes(x=Var1, y=Var2)) +
  stat_sum(aes(size=Freq))

library(vcd)
library(magrittr)

xtabs(weight ~ gender + vol, dat) %>% 
  mosaicplot(shade = T)