【发布时间】:2020-10-28 17:13:18
【问题描述】:
我有一个基因组数据集,每个基因都有一个分数:
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"))
【问题讨论】: