Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何按组计算Z分数_R - Fatal编程技术网

R 如何按组计算Z分数

R 如何按组计算Z分数,r,R,我想使用每组产生的平均值和标准差来计算Z分数。例如,我有下表。它有3组数据,我可以为每组生成平均值和标准差。然后,我使用组1平均值和SD来计算组1数据点的Z核,等等 > dat group level y 1 1 A 10.8 2 1 B 12.0 3 1 C 9.6 4 1 A 12.0 5 1 B 7.8 6 1 C 10.8 7 2 A 8.7 8

我想使用每组产生的平均值和标准差来计算Z分数。例如,我有下表。它有3组数据,我可以为每组生成平均值和标准差。然后,我使用组1平均值和SD来计算组1数据点的Z核,等等

> dat group level y 1 1 A 10.8 2 1 B 12.0 3 1 C 9.6 4 1 A 12.0 5 1 B 7.8 6 1 C 10.8 7 2 A 8.7 8 2 B 9.2 9 2 C 8.2 10 2 A 10.0 11 2 B 12.2 12 2 C 8.2 13 3 A 10.9 14 3 B 8.3 15 3 C 10.1 16 3 A 9.9 17 3 B 10.9 18 3 C 10.3 >dat 组水平y 1 A 10.8 21B12.0 3 1 C 9.6 41A12.0 51B7.8 6 1 C 10.8 7.2 A 8.7 8.2 B 9.2 9 2 C 8.2 10.2 A 10.0 11 2 B 12.2 12 2 C 8.2 13 3 A 10.9 14 3 B 8.3 15 3 C 10.1 16 3 A 9.9 17 3 B 10.9 18 3 C 10.3 我从这个博客学到了如何按组获取摘要数据,但不知道如何从那里开始

谢谢。

我想看看这个

比如:

require(data.table)
datDT <- data.table(dat)
datDT[, yScaled := scale(y), by = group]
require(data.table)
datDT基本R(即不需要依赖项)包括函数
ave()
(用于分组应用)和
scale()
(用于计算z分数):


dat$z您可以使用plyr的ddply函数来计算z分数

library(plyr)
dat <-  ddply(dat, .(group), summarize, z_score=scale(y))
库(plyr)
datIn
dplyr

library(dplyr)

dat_z = dat %>%
        group_by(group) %>%
        mutate(z_score = scale(y))

@Jeromy Anglim,如果我有两个分类组,我如何定制语法来获得z分数?比如,我有绘图、种类和数值变量的列表,我想根据绘图和种类对数值变量进行具体的规范化,因为在许多绘图中可以找到许多种类?@Stackuser我放置
dat$group
的位置代替了
参数,该参数接受任意数量的分组变量。只需添加更多变量<代码>dat$z谢谢,如果您再次帮助我,我如何使用R将图形放大或部分放大并放置在另一个位置,以便观众能更清楚地看到它?谢谢!如果你再帮我一次,我如何用R把最低点的坐标放在图中,例如,如果最低点的坐标是(17,17.1),我想在图上把这个点定位为(17,17.1),你怎么做?@stackuser你的问题不在这个答案的范围内,它解决了一个与策划无关的非常具体的问题。我认为你应该问一个全新的问题来帮助你解决这个问题。
dat <-  ddply(dat, .(group), summarize, z_score=(y-mean(y))/sd(y)))
library(dplyr)

dat_z = dat %>%
        group_by(group) %>%
        mutate(z_score = scale(y))