gpt4 book ai didi

r - 用 R 中每组的平均值逐组减去值

转载 作者:行者123 更新时间:2023-12-01 21:52:41 24 4
gpt4 key购买 nike

我正在尝试从每个组的值中减去组均值。

例如:

> x <- data.frame('gene' = c('A','A','A','B','B','C','C','C'),'value' = c(32.3,31,30.5,25,22.1,20.5,21.2,19.8))
> x
gene value
1 A 32.3
2 A 31.0
3 A 30.5
4 B 25.0
5 B 22.1
6 C 20.5
7 C 21.2
8 C 19.8

我可以找到组意味着:

> aggregate(x[,2],list(x$gene),mean)
Group.1 x
1 A 31.26667
2 B 23.55000
3 C 20.50000

如何用相应的组均值减去 x 中的“值”?我想要的结果如下:

   gene value-group.mean
1 A 1.03333
2 A -0.26667
3 A -0.76667
4 B 1.45
5 B -1.45
6 C 0
7 C 0.7
8 C -0.7

我如何在 R 中做到这一点?

谢谢。

最佳答案

使用库 dplyr,您可以:

library(dplyr)
x %>%
group_by(gene) %>%
mutate_all(funs(.-mean(.)))

# A tibble: 8 x 2
# Groups: gene [3]
gene value
<fct> <dbl>
1 A 1.03
2 A -0.267
3 A -0.767
4 B 1.45
5 B -1.45
6 C 0
7 C 0.700
8 C -0.700

关于r - 用 R 中每组的平均值逐组减去值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58948236/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com