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

如何利用已有代码对变量做组均值中心化并生成自定义名称新列?

生成带自定义名称的中心化新列方法

一、基于across的组均值中心化(保留原变量)

你找到的组均值中心化代码,只需添加.names参数就能生成带自定义后缀的新列,原列会自动保留。完整代码如下:

mydata <- mydata %>%
  group_by(group) %>%  # 按分组变量group分组
  mutate(across(a:z, ~center(.x, type="CWC"), .names = "{.col}_group_centered")) %>%
  ungroup()  # 后续操作不需要分组的话建议取消分组

这里的.names = "{.col}_group_centered"会将原列名(比如a)和后缀拼接,生成a_group_centered这类新列,原列a会继续保留在数据集中。

二、基于mutate_at的总均值中心化(保留原变量)

你提供的这段代码本身已经在生成新列,但可以自定义后缀名称;如果只需要均值中心化(不需要标准化缩放),记得给scale函数加上scale=FALSE参数:

mydata <- mydata %>% 
  mutate_at(.vars = colnames(mydata)[56:58], 
            .funs = list("total_centered" = ~scale(., center = TRUE, scale = FALSE)))

比如原第56列是col56,新列会被命名为col56_total_centered,原列col56不会被覆盖。另外注意,现在tidyverse更推荐用across替代mutate_at,新写代码优先选第一种方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 22:32:25