如何在R中按tpm值保留gene_name唯一行(取最大值)
修改后的R代码
在原有数据处理流程后添加分组筛选逻辑,即可保留每个gene_name对应tpm值最大的行:
file1 <- read.csv("file1.csv") file2 <- read.csv("file2.csv") merged_data <- file1 %>% merge(file2, by = "target_id") %>% select(gene_name, tpm) %>% group_by(gene_name) %>% slice_max(tpm, n = 1, with_ties = FALSE) %>% ungroup()
关键步骤说明
group_by(gene_name):按基因名对数据分组,将相同基因的行归为一组slice_max(tpm, n = 1, with_ties = FALSE):在每个分组内筛选出tpm值最大的1行;with_ties = FALSE保证同一基因有多个相同最大值时只留一行(若需保留所有最大值行,可移除该参数)ungroup():取消分组状态,避免后续操作受分组约束
这段代码处理你的示例输入时,会精准输出每个基因对应最大tpm的行,与期望结果完全匹配。
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

