如何在R语言中优雅添加x列第2-4高值的平均值列?
实现方法
这里有两种简洁优雅的实现方式,都能满足你的需求:
方法一:利用sort函数直接处理
这是最直观的写法,通过降序排序后提取第2-4位的数值再取平均:
df <- df %>% mutate(v.max.mean = mean(sort(x, decreasing = TRUE)[2:4]))
方法二:用slice_max贴合tidyverse风格
如果你习惯tidyverse的操作逻辑,可以用slice_max筛选出前4大的数值,去掉最大值后取平均:
df <- df %>% mutate(v.max.mean = mean(slice_max(., x, n = 4)$x[-1]))
补充说明
- 两种方法都会给整个数据框新增一列,每一行的取值都是
x列第二、第三、第四高值的平均值,和你示例中添加最大值列的逻辑一致。 - 你设想的
max.k函数确实不存在,但上述两种写法都能达到类似的效果,且代码简洁易读。
内容的提问来源于stack exchange,提问作者GrBa
相关产品推荐
相关产品推荐

