您好,我有一个数据框,
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
谢谢!
答案 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
我知道这不是您提出的确切问题,但是您可以从这里到达...