我正在尝试计算数据集中每一列中类别的比例(百分比)。
示例数据:
df <- data.frame(
"Size" = c("Y","N","N","Y","Y"),
"Type" = c("N","N","N","Y","N"),
"Age" = c("N","Y","N","Y","N"),
"Sex"=c("N","N","N","N","N")
)
df
数据生成如下表:
Size Type Age Sex
1 Y N N N
2 N N Y N
3 N N N N
4 Y Y Y N
5 Y N N N
我尝试使用prop.table来计算一个类别的比例:
prop.table(table(df$Size))
这有效,但仅计算一列的Y或N答案的百分比。这个数据集非常大,所以我想一次计算每个类别的比例。
我的目标是要有一个表,该表显示每一列的"is"答案的比例。
像这样:
Proportion Y
Size 0.60
Type 0.20
Age 0.40
Sex 0.00
我是R的新手,因此将不胜感激!
最佳答案
dplyr方法:
library(dplyr)
df %>% summarise_all(~mean(.=="Y"))
如果您有多个群组:
df1 = data.frame(class="A",df)
df2 = data.frame(class="B",df)
#make df2 different
df2$Size<- rep("Y",5)
newdf = rbind(df1,df2)
newdf %>% group_by(class) %>% summarise_all(~mean(.=="Y"))