如何根据一些虚拟变量生成R中比例的数据帧?

时间:2018-05-18 19:43:57

标签: r dataframe dplyr

我在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然后除以总观察值并合并在一起,这就是我一直在做的事情。任何帮助将不胜感激。

谢谢。

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)

enter image description here