我已经搜索并试了很多方法来解决这个问题,但我找不到办法。
假设mtcars
数据集,我想要做的是创建一个类似于下面的支柱表(注意下面的百分比是完全组成的):
disp
gear 0+ 100+ 200+ 300+ 400+
3 20% 20% 20% 20% 20%
4 0% 25% 25% 25% 25%
5 0% 10% 20% 30% 40%
解决方案需要将disp
放入箱柜,标记箱柜,然后根据disp
箱柜与gear
之间的关系创建道具表。
我很抱歉没有示例代码,但我对如何执行此操作一无所知。 任何帮助将不胜感激。
答案 0 :(得分:3)
disp <- paste0(findInterval(mtcars$disp, c(seq(0,400, 100),Inf)), "00+")
round(prop.table(table(mtcars$gear, disp), 1)*100, 1)
# disp
# 100+ 200+ 300+ 400+ 500+
# 3 0.0 6.7 33.3 33.3 26.7
# 4 33.3 66.7 0.0 0.0 0.0
# 5 20.0 40.0 0.0 40.0 0.0
答案 1 :(得分:1)
我们可以使用cut
生成垃圾箱,sub
重命名垃圾箱
mtcars$dispR <- as.character(cut(mtcars$disp,breaks = seq(0,500,100),right=FALSE))
mtcars$dispR <- sub("\\[(\\d{1,3}).*","\\1+",mtcars$dispR)
然后,要添加比例,我们可以使用questionr::rprop
library(questionr)
rprop(table(mtcars$gear,mtcars$dispR))
0+ 100+ 200+ 300+ 400+ Total
3 0.0 6.7 33.3 33.3 26.7 100.0
4 33.3 66.7 0.0 0.0 0.0 100.0
5 20.0 40.0 0.0 40.0 0.0 100.0
Ensemble 15.6 34.4 15.6 21.9 12.5 100.0
第二步可以在基础R中用addmargins
t <- addmargins(table(mtcars$gear,mtcars$dispR))
round(t/t[,"Sum"] * 100,1)
0+ 100+ 200+ 300+ 400+ Sum
3 0.0 6.7 33.3 33.3 26.7 100.0
4 33.3 66.7 0.0 0.0 0.0 100.0
5 20.0 40.0 0.0 40.0 0.0 100.0
Sum 15.6 34.4 15.6 21.9 12.5 100.0