gpt4 book ai didi

r - 如何计算 R 中前 10% 的平均值

转载 作者:行者123 更新时间:2023-12-04 12:02:45 25 4
gpt4 key购买 nike

我的数据集包含对不同物种的多个观察。每个物种都有不同数量的观察。在 R 中寻找一种快速方法来计算每个物种给定变量的前 10% 值的平均值。

我想出了如何获得给定数量的值(即前 20 个值)。

clim6 <-setDT(range)[order(species, clim6),.SD[1:20],by=species]
write.csv(Bioclimlo6, file = "clim6.csv")

我也知道有一种方法可以修剪数据集以生成剩余数据集的平均值,但我不确定如何仅修剪底部 90%。
mean(x, trim = 0, na.rm = FALSE)

最佳答案

前 10% 值的平均值,使用基数 R:

x = c(1:100,NA)
mean(x[x>=quantile(x, 0.9, na.rm=TRUE)], na.rm=TRUE)

前 10% 值的平均值,按变量分组:
# Fake data
dat = data.frame(x=1:100, group=rep(LETTERS[1:3], c(30,30,40)))

dplyr
library(dplyr)

dat %>% group_by(group) %>%
summarise(meanTop10pct = mean(x[x>=quantile(x, 0.9)]))

   group meanTop10pct
(fctr) (dbl)
1 A 29.0
2 B 59.0
3 C 98.5


data.table
library(data.table)

setDT(dat)[, list(meanTop10pct = mean(x[x>=quantile(x, 0.9)])), by=group]

   group meanTop10pct
1: A 29.0
2: B 59.0
3: C 98.5

关于r - 如何计算 R 中前 10% 的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36586332/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com