从前有个小白学生信,然后经过一段时间的学习,他进阶成了小青(该小伙真名就叫某青→_→)。
今天他问了一个问题,就是在基因芯片数据处理的时候,有时候探针会有重复,这时候想移除重复的探针,仅保留其values值的总和最大的那一行。
简化一下需求,即对于表格如下,可以看到probe_1, probe_2, 有重复,对于这样的重复探针,我们只想保留其中一行,保留的标准是其他的值加起来总和最大的那一行。
D1 D2 probe
1 6 probe_1
4 10 probe_2
3 7 probe_3
5 9 probe_1
2 8 probe_2
...
预期的结果是:
D1 D2 probe
5 9 probe_1
4 10 probe_2
3 7 probe_3
...
那怎么实现呢,方法肯定不止一种,有个简单的代码如下。
rm(list=ls())
set.seed(12)
dat <- data.frame("D1"=sample(1:5, 5), "D2"=sample(6:10, 5))
dat$probe = paste("probe", c(1:3, 1:2), sep = "_")
dat$sumvalue <- apply(dat[,c("D1","D2")], 1, sum)
library(dplyr)
dat1 <- dat %>%
group_by(probe) %>%
filter(sumvalue==max(sumvalue))
未完待续
网友评论