r - 如何在计算每个组的平均值时删除 ddply 中的第 5 个和第 95 个百分位值
解决方案
这是一个mean2
计算修剪均值的函数。
mean2 <- function(x, na.rm = FALSE, probs = c(0.05, 0.95), ...){
if(na.rm) x <- x[!is.na(x)]
qq <- quantile(x, probs = probs)
keep <- x > qq[1] & x < qq[2]
mean(x[keep], ...)
}
现在mutate
data.frame 与分组后的功能species
。
library(dplyr)
df %>%
group_by(species) %>%
mutate(mean = mean2(trait))
测试数据创建代码
set.seed(1234)
species <- sample(LETTERS[1:3], 20, TRUE)
trait <- sample(2:8, 20, TRUE)
trait[sample(20, 3)] <- sample(50:60, 3)
trait[sample(20, 1)] <- -2
df <- data.frame(species, trait)
推荐阅读
- c# - 在 Linq 中使用 Group by 获取数据表的数组或 Ienumerable
- docker - Docker - Kibana、APM、Elasticsearch 问题 -
- c++ - 我收到错误“矩阵”类型的无效操作数
*' 和 'int' 到二进制 'operator*' - java - 如何在java中提取双引号之间的字符串?
- c# - 如何从第三种形式将表单打开到面板中?
- c# - 为什么我的模型属性在尝试 POST 时为空?
- python - 尝试检测人脸时网络摄像头窗口总是崩溃
- python - Django gettext 和 gettext_lazy 都以相同的名称导入
- android - 三星设备上的位图存储已像素化,无法在文件夹中找到。仅在设备重启后修复
- java - 我的通用方法不适用于参数