-1

如果我有下面提供的数据框,是否有办法为所有基因选择最高 ID。

gene_name <- c("AADACL2", "AADACL3", "AADACL4", "AADACL4", "AADACL4", "AADACL4", "AADACL4", "AADACL4")

target_id <- c(79.0524, 62.0098, 61.6708, 65.1106, 58.6207, 63.9706, 64.3735, 61.3232)

table <- data.frame(gene_name = gene_name, id = target_id)

我想要一个看起来像这样的数据框:

gene_name_2 <- c("AADACL2", "AADACL3", "AADACL4")

target_id_2 <- c(79.0524, 62.0098, , 65.1106) 

table_2 <- data.frame(gene_name = gene_name_2, id = target_id_2)

我有比这更大的数据集,所以需要为很多基因做这件事,我就是想不出办法来做

4

1 回答 1

0
aggregate(.~gene_name,table,max)
  gene_name      id
1   AADACL2 79.0524
2   AADACL3 62.0098
3   AADACL4 65.1106


library(tidyverse)

table%>%group_by(gene_name)%>%arrange(desc(id))%>%top_n(1,id)
# A tibble: 3 x 2
# Groups:   gene_name [3]
  gene_name      id
     <fctr>   <dbl>
1   AADACL2 79.0524
2   AADACL4 65.1106
3   AADACL3 62.0098
于 2018-02-27T17:40:40.967 回答