生物信息学札记

R语言处理data.frame数据,对某一列中具有重复字段的行,

2019-11-09  本文已影响0人  天地本无心

从前有个小白学生信,然后经过一段时间的学习,他进阶成了小青(该小伙真名就叫某青→_→)。

今天他问了一个问题,就是在基因芯片数据处理的时候,有时候探针会有重复,这时候想移除重复的探针,仅保留其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))

未完待续

上一篇下一篇

猜你喜欢

热点阅读