首页 > 解决方案 > 按组获取条件百分比

问题描述

我刚从 R 开始,遇到了一个问题。

我有一个格式如下的数据集:

ID 重量 性别 类别
1 40 1 2
2 50 2 1

我想要得到的是一个按类别列出值的表:

第一类 第 2 类
平均重量 66.00 99.00
女性百分比 15.00 22.00

任何想法如何得到它?我正在尝试使用 data.table,但是在我尝试对其进行分组后,这两个类别的 % 保持不变。

dt[,list("mean weight"=mean(weight), "% of females" = setDT( DATASET)[ , 100 * nrow( DATASET[sex==1]) / nrow(DATASET)  ]), by=c("category")]

标签: r

解决方案


该软件包dplyr在这里很有帮助:

dat<-data.frame(Weight=c(40,50,60,40,30,50),    Sex=factor(c(1,2,2,1,1,2)), Category=as.factor(c(2,1,2,1,2,1)))

library(dplyr)

Table<-dat %>% dplyr::group_by(Category) %>% dplyr::summarise(
  Mean.of.Weight=mean(Weight),
  Perc.Female=length(which(Sex==1))/length(Sex)
)

Table

输出:

  Category Mean.of.Weight Perc.Female
  <fct>             <dbl>       <dbl>
1 1                  46.7       0.333
2 2                  43.3       0.667

如果要转置:

t(Table)

               [,1]        [,2]       
Category       "1"         "2"        
Mean.of.Weight "46.66667"  "43.33333" 
Perc.Female    "0.3333333" "0.6666667"

推荐阅读