gpt4 book ai didi

r - 如何计算r中一组值与所有其他值之间的平均差

转载 作者:行者123 更新时间:2023-12-04 08:40:50 24 4
gpt4 key购买 nike

我有一个分组的基因数据集,每个基因都有一个分数:

 Group Gene      Score     
1 AQP11 0.55
1 CLNS1A 0.2
1 RSF1 0.54
2 CFDP1 0.41
2 CHST6 0.42
3 ACE 0.63
3 NOS2 0.63
我希望检查每组得分最高的基因,并查看该基因与其组中所有其他基因之间的平均得分差异。
输出例如(只是注意手工计算):
 Group Gene      Score     Avg_TopGene_Difference_Per_Locus
1 AQP11 0.55 0.18 # difference of AQP11 score with the other genes: (0.35+0.01)/2
1 CLNS1A 0.2 0.18
1 RSF1 0.54 0.18
2 CFDP1 0.41 ...
2 CHST6 0.42
3 ACE 0.63
3 NOS2 0.63
我正在尝试使用 group_by() 的组合和 top_n但我并没有像 diff() 那样进行实际差异计算是连续的,不会回到只使用我的最高分基因。
输入数据:
structure(list(Group = c(1L, 1L, 1L, 2L, 2L, 3L, 3L), Gene = c("AQP11", 
"CLNS1A", "RSF1", "CFDP1", "CHST6", "ACE", "NOS2"), Score = c(0.5566507,
0.2811747, 0.5269924, 0.4186066, 0.4295135, 0.634, 0.6345), direct_count = c(4L,
0L, 3L, 1L, 1L, 1L, 1L), secondary_count = c(5L, 2L, 6L, 2L,
3L, 1L, 1L)), row.names = c(NA, -7L), class = c("data.table",
"data.frame"))

最佳答案

这会给你你需要的吗?听起来对于每个组,您都希望获得 max 之间的差异。分数和每个分数。然后,Avg_TopGene_Difference_Per_Locus将是这些差异的总和除以差异的数量(减去 1)。请注意,您可以添加 filter之后 group_by确保n() > 1如果可能的话,避免除以零。

library(tidyverse)

df %>%
group_by(Group) %>%
mutate(diff = max(Score) - Score,
Avg_TopGene_Difference_Per_Locus = sum(diff) / (n() - 1))
输出
  Group Gene   Score direct_count secondary_count     diff Avg_TopGene_Difference_Per_Locus
<int> <chr> <dbl> <int> <int> <dbl> <dbl>
1 1 AQP11 0.557 4 5 0 0.153
2 1 CLNS1A 0.281 0 2 0.275 0.153
3 1 RSF1 0.527 3 6 0.0297 0.153
4 2 CFDP1 0.419 1 2 0.0109 0.0109
5 2 CHST6 0.430 1 3 0 0.0109
6 3 ACE 0.634 1 1 0.000500 0.000500
7 3 NOS2 0.634 1 1 0 0.000500

关于r - 如何计算r中一组值与所有其他值之间的平均差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64577981/

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