r - 如何选择r中col的最高值
问题描述
我有一个具有重复行的数据框。我想删除重复的行并为每个 sample_id 选择具有每个计数最大值的 col 的行。我怎样才能做到这一点?
示例数据(来自评论):
structure(list(gene_id = c("ENSG00000000003", "ENSG00000000003",
"ENSG00000000003", "ENSG00000000003", "G00000000003", "G00000000003",
"G00000000003", "G00000000003", "G00000000003", "G00000000003"
), DO221539 = c(681L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), DO221540 = c(148L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), DO221541 = c(650L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L), DO221542 = c(258L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L), DO221543 = c(57L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L), DO221544 = c(224L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L), DO221545 = c(60L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), DO221546 = c(161L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), DO224575 = c(15L, 0L, 0L,
0L, 0L, 949L, 0L, 0L, 0L, 0L)), class = "data.frame", row.names = c(NA,
-10L))
我希望输出是
structure(list(gene_id = c("ENSG00000000003") ,DO221539 = 681L,DO221540 = 148L ,DO221541 = 650L, DO221542 = 258L , DO221543 = 57L, DO221544 = 224L, DO221545 = 60L, DO221546 = 61L, DO224575 = 949L, class = "data.frame", row.names = c(NA, -10L))
解决方案
我们可以按“gene_id”分组并获取max
每列的summarise_all
library(tidyverse)
df1 %>%
group_by(gene_id) %>%
summarise_all(max)
推荐阅读
- json - 如何使用数据类在 Kotlin 中解决“无法编写 JSON:无限递归 (StackOverflowError)”?
- python - 将透视变换图像坐标转换为源图像坐标
- snakemake - Snakemake:参数键的通配符
- python - 如何使用微调的 BERT 模型进行句子编码?
- image - 为什么 Scilab 不打开图像文件?
- javascript - jsGrid在编辑功能中改变输入的类型
- email - 如何触发在启用逻辑应用程序之前到达的实际电子邮件的运行?
- android - kotlinx 序列化。反序列化泛型参数麻烦
- android - 使用广播接收器以编程方式检查开发人员选项
- java - 如何在 optional.orElseThrow(..) 中抛出异常之前执行操作