我在R中有一个具有ID号的数据帧,以及大约5个分类变量,表明每个ID是否属于某个类别。例如:
ID # category1 category2 category3 category4 category5
1 1 0 1 0 0
2 0 0 0 0 0
3 1 1 1 0 0
我想创建一个日期框,显示每个类别中1的比例。例如,我想要的数据框如下所示:
category1 category2 category3 category4 category5
proportion 22.23% 16.78% 34.56% 9.31% 3.45%
然后我还想采用这个数据框并创建条形图,其中x轴上的每个类别和y轴上的1的比例。
我想知道是否有更优雅的方法来做这个比使用dplyr计算每组的1然后除以总观察值并合并在一起,这就是我一直在做的事情。任何帮助将不胜感激。
谢谢。
答案 0 :(得分:0)
# create some data
N = 500
df <- data.frame(ID = 1:N,
category1 = sample(c(1,0), N, replace=TRUE, prob=c(0.4,0.6)),
category2 = sample(c(1,0), N, replace=TRUE, prob=c(0.8,0.2)),
category3 = sample(c(1,0), N, replace=TRUE, prob=c(0.5,0.5)),
category4 = sample(c(1,0), N, replace=TRUE, prob=c(0.3,0.7)),
category5 = sample(c(1,0), N, replace=TRUE, prob=c(0.9,0.1)))
# calculate column percentages
df.percent <- colMeans(df[,-1])
# graph barplot
b <- barplot( df.percent,
ylim = c(0,1),
col=rgb(0.2,0.4,0.6,0.6))
# Add text
text(b, df.percent, labels=paste0(round(df.percent, 2),"%"), pos=3)