【发布时间】:2021-08-13 10:28:56
【问题描述】:
我有一组基因数据集。有时一个基因可以出现在多个组中,如果某个基因出现在另一个组中并且它是该组中唯一的基因,我想删除它的重复。
例如我的数据如下:
Group Gene
1 Gene1
1 Gene2
1 Gene3
2 Gene3
2 Gene4
3 Gene1
4 Gene10
4 Gene11
Gene1 出现在第 1 组和第 3 组中,但在第 3 组中它是该组中唯一的基因,因此我想删除该行。如何针对这种情况进行编码,然后通过该过滤器删除重复项?
我看到了一些类似的问题,并且我尝试过重新利用代码,但我还没有走多远。目前我正在尝试:
library(dplyr)
df %>%
group_by(Gene) %>%
mutate(duplicates = filter(n() > 1))
mutate(to_remove = duplicates == TRUE & Group = filter(n() == 1))
但我可能根本没有正确理解这个语法,我不经常使用 dplyr。
输入数据示例:
df <- structure(list(Group = c(1L, 1L, 1L, 2L, 2L, 3L, 4L, 4L), Gene = c("Gene1",
"Gene2", "Gene3", "Gene3", "Gene4", "Gene1", "Gene10", "Gene11"
)), row.names = c(NA, -8L), class = c("data.table", "data.frame"
))
【问题讨论】: