首页 > 解决方案 > 如何在r中按组选择最高值的行?

问题描述

我有一个名为“基因座”的组中的基因数据集,我希望选择与同一基因座/组中的基因相比得分最高的基因

我的输入数据如下所示:

    loci Gene     Score
1:    1  AQP11   0.5566507
2:    1 CLNS1A   0.2811747
3:    1   RSF1   0.5269924
4:    2  CFDP1   0.4186066
5:    2  CHST6   0.5395135

我的输出将选择基因座 1 中的 3 个基因中得分最高的组/基因座 1 的基因,然后是与组 2 中的其他基因相比得分最高的基因。

所以我试图得到的这个例子的输出是:

     loci  Gene     Score
1:    1    AQP11   0.5566507 #highest score in loci 1
2:    2    CHST6   0.5395135 #highest score in loci 2

如何按行分组筛选最高分?我不知道从哪里开始。

输入数据:

structure(list(loci = c(1L, 1L, 1L, 2L, 2L), Gene = c("AQP11", 
"CLNS1A", "RSF1", "CFDP1", "CHST6"), Score = c(0.556650698184967, 
0.281174659729004, 0.526992380619049, 0.418606609106064, 0.539513528347015
)), row.names = c(NA, -5L), class = c("data.table", "data.frame"
))

我一直在用 dplyr 尝试一些东西,dplyr::group_by()但我不断收到各种错误。

标签: rdataframedplyrdata.table

解决方案


使用 dplyr:

> library(dplyr)
> df %>% group_by(loci) %>% filter(Score == max(Score))
# A tibble: 2 x 3
# Groups:   loci [2]
   loci Gene  Score
  <dbl> <chr> <dbl>
1     1 AQP11 0.557
2     2 CHST6 0.540

推荐阅读