分组,总结和 return 值回到 R 中的数据集?

Group by, summarise and return the value back to the dataset in R?

我试图在不丢失列值的情况下创建汇总统计信息。例如使用鸢尾花数据集,我想 group_by 物种并找到汇总统计数据,例如 sdmean.

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

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

看起来像这样

然后我想将 meansd 的结果添加到原始鸢尾花数据中,这样我就可以获得属于该物种的每一行的 z 分数.

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

你可以使用像

这样的东西
library("tidyverse")
data <- (iris)  
df <- data %>% 
  group_by(Species) %>% 
  summarise(mean.iris=mean(Sepal.Length), sd.iris=sd(Sepal.Length))

data %>% left_join(df, by = "Species") %>% 
  mutate(Z = (Sepal.Length-mean.iris)/sd.iris)

虽然已经有 ,但这里有一种计算所有数值变量的 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())