r - 按组获取条件百分比
问题描述
我刚从 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")]
解决方案
该软件包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"
推荐阅读
- go - 如何按预加载对象中的字段进行选择?
- raku - 使用 Metamodel::ConcreteRoleHOW.new_type 时出错
- google-cloud-dataflow - Beam 管道在 GroupByKey 与窗口后不产生任何输出,我得到内存错误
- neo4j - NEO4J Cypher 查找具有多个关系计数的节点
- matlab - Why is a variable undefined when trying to analyse .bat file in MATLAB?
- android - 如何在 iOS 和 Android 的给定时间检测用户是否仅在一台设备上处于活动状态
- json - Installing gem json 2.2.0 failed - windows
- elasticsearch - How to remove multiple fields from index?
- sql - Postgresql:从 EXECUTE 输出导出到 csv 数据
- xcode - Xcode 10.2, iOS 12.2 : Application installed over OTA(Enterprise) not opening