繁体   English   中英

R-descr包中的修改后的镶嵌图

[英]R - Modified mosaic plot from descr package

我有一个数据帧db用2个分类变量: varA具有4个级别( 0123 ), varB有2个电平( yesno )。 varB没有varB级别0的varA

id  varA    varB
1   2       yes
2   3       no
3   3       no
4   1       yes
5   0       NA
6   1       no
7   2       no
8   3       yes
9   3       yes
10  2       no

我使用descr包中的CrossTable创建了一个列联表,然后使用plot函数创建了一个镶嵌图:

table <- CrossTable(db$varA,db$varB, missing.include=FALSE)
plot(table,xlab="varA",ylab="varB")

我得到了这个情节:

马赛克图

我想从情节中消除等级0。 我还想添加2个y轴,一个在图的左侧,比例从0到1,另一个在y轴上,比例从1到0。

你可以帮帮我吗?

好吧, 很烦人。 不支持子集此类“ CrossTable”对象。 如果它是一个行为举止类似表的对象,则只需将table[ , -1]传递给绘图函数即可。 相反,您需要在传递给CrossTable的数据之前进行分计数:

table <- with( na.omit(db), CrossTable( varA, varB, missing.include=TRUE))
plot(table, xlab="varA", ylab="varB")

BTW使用名称table的数据对象是相当混乱到正规[R用户,因为table的功能是我们的基本工具之一。

我个人会避免使用CrossTable函数,因为它的输出太奇怪了,无法用于典型R函数的管理。 是的,我知道它会产生类似SAS的输出,但是R用户逐渐喜欢table函数的紧凑输出以及可用于表对象的许多矩阵运算。 您可能需要通过prop.table手动获取保证金百分比。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM