You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R语言中筛选指定行分组计算均值的实现方法

问题描述

现有如下R数据框:

df <- structure(list(V1 = c(43.8735370052414, 43.2134452032708, 46.3127470212784, 
47.9401589009531, 30.5684881461115, 32.5528665575571, 29.3035738750668, 
30.9770316442935), Author = c("Arthur", "Mario", "ALPACA_M_19", 
"ALPACA_M_27", "Arthur", "Mario", "ALPACA_M_19", "ALPACA_M_27"
), Distance = c("G-RHI", "G-RHI", "G-RHI", "G-RHI", "NS-RHI", 
"NS-RHI", "NS-RHI", "NS-RHI"), Skull = c("W003", "W003", "W003", 
"W003", "W004", "W004", "W004", "W004")), row.names = c(NA, -8L
), class = "data.frame")

数据框视图:

> df
        V1      Author Distance Skull
1 43.87354      Arthur    G-RHI  W003
2 43.21345       Mario    G-RHI  W003
3 46.31275 ALPACA_M_19    G-RHI  W003
4 47.94016 ALPACA_M_27    G-RHI  W003
5 30.56849      Arthur   NS-RHI  W004
6 32.55287       Mario   NS-RHI  W004
7 29.30357 ALPACA_M_19   NS-RHI  W004
8 30.97703 ALPACA_M_27   NS-RHI  W004

目前已能通过以下代码按Skull和Distance分组,添加包含全组均值的Mean列:

library(dplyr)
df %>%
  group_by(Skull, Distance) %>%
  mutate(Mean = mean(V1))

现在需要新增一列Mean_A_M,该列的均值仅基于Author为Arthur和Mario的行计算,且按Skull和Distance分组后将结果填充到该组所有行,预期输出如下:

# A tibble: 8 × 6
# Groups:   Skull, Distance [2]
     V1 Author      Distance Skull  Mean Mean_A_M
  <dbl> <chr>       <chr>    <chr> <dbl>    <dbl>
1  43.9 Arthur      G-RHI    W003   45.3     43.6
2  43.2 Mario       G-RHI    W003   45.3     43.6
3  46.3 ALPACA_M_19 G-RHI    W003   45.3     43.6
4  47.9 ALPACA_M_27 G-RHI    W003   45.3     43.6
5  30.6 Arthur      NS-RHI   W004   30.9     31.6
6  32.6 Mario       NS-RHI   W004   30.9     31.6
7  29.3 ALPACA_M_19 NS-RHI   W004   30.9     31.6
8  31.0 ALPACA_M_27 NS-RHI   W004   30.9     31.6
解决方案

可以在mutate中对V1添加条件筛选,仅计算Arthur和Mario行的均值,同时保留分组逻辑:

library(dplyr)

df %>%
  group_by(Skull, Distance) %>%
  mutate(
    Mean = mean(V1),
    Mean_A_M = mean(V1[Author %in% c("Arthur", "Mario")], na.rm = TRUE)
  )

代码说明

  • V1[Author %in% c("Arthur", "Mario")]:筛选出当前分组中Author为Arthur或Mario的V1值
  • na.rm = TRUE:避免因筛选后无数据出现报错(本例中每组都有这两个作者,可省略,但保留更稳健)
  • 分组逻辑不变,计算得到的均值会自动填充到当前分组的所有行中

内容的提问来源于stack exchange,提问作者antecessor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 11:33:22