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

如何在R中基于年龄组与性别两列分组对数值列进行标准化?

按年龄组和性别分组标准化数据的解决办法

嘿,别担心,这确实是个很基础的操作,你离正确答案只差一点点啦!

首先看你写的代码:

df %>% group_by(agegroup, gender) %>% mutate(scaled = scale(values))

这里有个小疏漏:你的数据里列名是value,但代码里写成了values(多了个s),这会导致R找不到对应列,自然分组后的标准化没生效~

正确的代码

修正列名后,这段代码就可以正常按agegroup和gender的组合分组,对value列做标准化了:

library(dplyr)

# 修正列名后的代码
df <- df %>% 
  group_by(agegroup, gender) %>% 
  mutate(scaled_value = scale(value)) %>% 
  ungroup() # 可选:如果后续不需要保留分组状态,可以取消分组

验证分组是否生效

你可以用以下代码检查每个分组的标准化结果是否符合预期(标准化后均值为0,方差为1):

df %>% 
  group_by(agegroup, gender) %>% 
  summarise(
    mean_scaled = mean(scaled_value, na.rm = TRUE),
    var_scaled = var(scaled_value, na.rm = TRUE)
  )

运行后你会看到每个分组的mean_scaled接近0,var_scaled接近1,说明分组标准化确实生效了。

手动实现标准化(可选)

如果你想更清楚标准化的过程,也可以手动计算,效果和scale()函数完全一致:

df <- df %>% 
  group_by(agegroup, gender) %>% 
  mutate(
    scaled_value_manual = (value - mean(value, na.rm = TRUE)) / sd(value, na.rm = TRUE)
  ) %>% 
  ungroup()

这样就能得到按年龄组和性别分别标准化后的新列啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:52:54