使用iris数据集,我试图为每个变量计算z得分。通过执行以下操作,我得到的数据格式整齐:
library(reshape2)
library(dplyr)
test <- iris
test <- melt(iris,id.vars = 'Species')
Run Code Online (Sandbox Code Playgroud)
这给了我以下内容:
Species variable value
1 setosa Sepal.Length 5.1
2 setosa Sepal.Length 4.9
3 setosa Sepal.Length 4.7
4 setosa Sepal.Length 4.6
5 setosa Sepal.Length 5.0
6 setosa Sepal.Length 5.4
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试为每个组创建一个z分数列(例如Sepal.Length的z分数与Sepal。Width的z分数不兼容)时,请使用以下命令:
test <- test %>%
group_by(Species, variable) %>%
mutate(z_score = (value - mean(value)) / sd(value))
Run Code Online (Sandbox Code Playgroud)
所得的z得分尚未分组,并且基于所有数据。
使用dpylr按组返回z分数的最佳方法是什么?
非常感谢!