r - R中每组的平均值减去分组值
问题描述
我试图从每个组的值中减去组均值。
例如:
> 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 中做到这一点?
谢谢。
解决方案
您可以使用ave()
来实现它base R
,在这种情况下,您不需要aggregate
中间应用:
x$value_group.mean <- with(x,value-ave(value,gene))
这样
> x
gene value value_group.mean
1 A 32.3 1.0333333
2 A 31.0 -0.2666667
3 A 30.5 -0.7666667
4 B 25.0 1.4500000
5 B 22.1 -1.4500000
6 C 20.5 0.0000000
7 C 21.2 0.7000000
8 C 19.8 -0.7000000
推荐阅读
- oracle - 直接将数据作为 CSV 文件获取,而不是从 spring-data-jpa 获取对象列表
- ios - High Sierra (Mac OS 10.14.6):无法构建 gem 原生扩展
- python - 我在哪里可以找到手写损坏数字或浮点数或数字的数据集?
- python - 让 python 等到 subprocess.call 完成它的命令
- cypress - 赛普拉斯等待不同的页面加载
- vue.js - 如何使 vuetify 选择下拉菜单工作
- javascript - 在通过方法调用的方法中获取类属性
- javascript - 如何在 JS 函数中向 td 表中添加类似输入类型日期的日期?
- php - 为什么 $_POST[''] 不能使用
- html - 重新加载div的顶部