r - R:计算一个因子在data.frame中与group by结合的比例
问题描述
我想summarise
使用 group by 对数据框进行几次计算。输入数据:
dat <- data.frame (ID = c(1:10),
var1 = as.factor(c("A","B","A","A","B","B","B","C","A","B")),
Var2 = as.factor(c("low","medium","low","low","medium","high","high","high","high","high")))
现在我想对 var1 进行分组,计算 ID 并计算 var2 = high 的比例。我的输出应该是这样的:
var1 total prop_high
1 A 4 0.25
2 B 5 0.60
3 C 1 1.00
到目前为止,我得到了以下代码,但我陷入了比例计算
dat2 <- dat %>%
group_by(var1) %>%
summarise(total = n(),
prop_high = )
解决方案
您可以采用mean
逻辑值来获得比例。
library(dplyr)
dat %>%
group_by(var1) %>%
summarise(total = n(),
prop_high = mean(Var2 == 'high'))
#Same as
#prop_high = sum(Var2 == 'high')/n())
# var1 total prop_high
# <fct> <int> <dbl>
#1 A 4 0.25
#2 B 5 0.6
#3 C 1 1
推荐阅读
- java - 如何在非活动中从房间数据库中获取数据。(在通知的 JobIntentService 中)
- javascript - 在 componentDidUpdate 中比较 prevProps 的普通/标准方法
- java - Java JPA OneToMany 关系和查询
- javascript - useEffect 中的循环依赖
- c++ - 未定义对“cudaRegisterLinkedBinary”的引用-CMake 中的链接错误?
- html -
- javascript - 插入新对象和控制台日志的 JavaScript 对象数组
- node.js - 如何用我的新 NPM 版本更新我的项目?
- python - 如何在图像上绘制椭圆?
- php - 使用 Laravel 上传新商品时,控制器中的订单号加 1