首页 > 解决方案 > 分组,汇总并将值返回到 R 中的数据集?

问题描述

我正在尝试在不丢失列值的情况下创建汇总统计信息。例如使用 iris 数据集,我想group_by从物种中找到汇总统计信息,例如sdmean

完成此操作后,我想将其添加回原始数据集。我怎么能做到这一点,我只能做第一步。

library("tidyverse")
data <- (iris)  
data<-data %>% 
group_by(Species) %>% 
summarise(mean.iris=mean(Sepal.Length), sd.iris=sd(Sepal.Length))

这看起来像这样

在此处输入图像描述

然后我想将mean和的结果添加sd到原始虹膜数据中,这样我就可以获得每个单独行的 z 分数(如果它属于该物种)。

进一步解释;基本上按物种创建组,然后根据它们的物种找到每个植物的 z 分数。

标签: rgroupingnormalization

解决方案


虽然已经有一个公认的答案,但这是一种计算所有数值变量的 Z 分数的方法。

library(dplyr)
library(stringr)

iris %>%
  group_by(Species) %>%
  mutate(across(where(is.numeric), scale)) %>% 
  rename_with(~str_c(., "_Z"), where(is.numeric)) %>%
  ungroup() %>%
  left_join(iris, ., by = "Species") %>%
  relocate(Species, .after = last_col())

推荐阅读