如何将数字除以其所属组的标准偏差

时间:2019-05-19 04:31:32

标签: r dplyr data.table plyr

您好,我有一个数据框,

g1 = data.frame ( 
    gene = c( "a","a","a","a","b","b"),
    value = c(1,200,3,5,0,3)
)
> g1
  gene value
1    a     1
2    a   200
3    a     3
4    a     5
5    b     0
6    b     3

使用ddply可以为每个组生成描述性值。

ddply(g1, c("gene"), summarise,
      N    = length(value),
      mean = mean(value),
      sd   = sd(value),
      se   = sd / sqrt(N)
)
  gene N  mean       sd       se
1    a 4 52.25 98.51354 49.25677
2    b 2  1.50  2.12132  1.50000

但是我有什么办法可以将行中的每个数字除以受尊重的sd? 因此第一行上方的示例为1 / 98.5

谢谢!

1 个答案:

答案 0 :(得分:0)

> g2<-group_by(g1,gene) %>% mutate(zscore = (value - mean(value))/sd(value))
> g2
# A tibble: 6 x 3
# Groups:   gene [2]
  gene  value zscore
  <fct> <dbl>  <dbl>
1 a         1 -0.520
2 a       200  1.50 
3 a         3 -0.500
4 a         5 -0.480
5 b         0 -0.707
6 b         3  0.707

我知道这不是您提出的确切问题,但是您可以从这里到达...