如何利用已有代码对变量做组均值中心化并生成自定义名称新列?
生成带自定义名称的中心化新列方法
一、基于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
相关产品推荐
相关产品推荐

