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

如何用R语言dplyr计算分组均值与行值的差值并生成新列

用dplyr实现分组均值差值计算

你需要将每个站点的海拔转换为相对于所在州平均海拔的差值,填充elev_normalized列,使用tidyverse中的dplyr工具可以快速完成:

完整代码实现

# 先加载tidyverse包(若未加载)
library(tidyverse)

# 按州分组计算并更新目标列
t <- t %>%
  group_by(us_state) %>%
  mutate(elev_normalized = elev_m - mean(elev_m, na.rm = TRUE)) %>%
  ungroup()

代码说明

  • group_by(us_state):以us_state为分组依据,让后续计算仅在每个州的范围内执行
  • mutate(elev_normalized = elev_m - mean(elev_m, na.rm = TRUE)):生成(或覆盖)elev_normalized列,值为当前行海拔减去该州所有站点的海拔均值;na.rm = TRUE用于处理可能存在的缺失值,让计算更稳健
  • ungroup():取消分组状态,避免后续数据操作受到分组限制

处理后的结果

执行代码后,你的tibble会更新为:

t
# A tibble: 8 × 4
  us_state  site_n elev_m elev_normalized
  <chr>      <int>  <dbl>           <dbl>
1 Louisiana      1      2             0  
2 Louisiana      2      2             0  
3 Louisiana      3      3             1  
4 Louisiana      4      1            -1  
5 Colorado       1   1600            -0.25
6 Colorado       2   1610             9.75
7 Colorado       3   1590           -10.25
8 Colorado       4   1601             0.75

可以看到,每个站点的elev_normalized值都准确对应了该站点海拔与所在州平均海拔的差值,比如路易斯安那州的平均海拔为2米,因此前4行的差值分别为0、0、1、-1,完全符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 19:55:15