我试图在不丢失列值的情况下创建汇总统计信息。例如,使用虹膜数据集,我希望对物种执行group_by
操作,并查找汇总统计信息,如sd
和mean
。
一旦我这样做了,我想把它添加回原始数据集中。我怎么能做到这一点,我只能做第一步。
library("tidyverse")
data <- (iris)
data<-data %>%
group_by(Species) %>%
summarise(mean.iris=mean(Sepal.Length), sd.iris=sd(Sepal.Length))
这看起来像这样
然后我想将mean
和sd
的结果添加到原始的虹膜数据中,这样我就可以获得每一行的z得分,如果它属于该物种的话。
为了进一步解释,本质上是按物种创建组,然后根据它们的物种找到每种植物的z分数。
发布于 2021-04-12 05:37:37
您可以使用类似于
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)
发布于 2021-04-12 06:38:18
虽然已经有了一个accepted answer,但这里有一种计算所有数值变量的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())
https://stackoverflow.com/questions/67053095
复制相似问题