可视化双向加权频率表

时间:2016-10-31 08:52:36

标签: r plot visualization

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

如果我们有上述数据框并创建双向加权频率表:

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确实提到:

  

使用vcd包可视化分类数据之间的关系(例如马赛克和关联图)。

2 个答案:

答案 0 :(得分:3)

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

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

enter image description here

答案 1 :(得分:0)

library(vcd)
library(magrittr)

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