【发布时间】:2021-05-04 20:49:43
【问题描述】:
我有一个包含许多基因的数据框(列是“基因”)。有些基因不止一次出现。我想对只有出现不止一次的基因的数据框进行子集化。换句话说,我想删除相对于“基因”列唯一的行。
【问题讨论】:
我有一个包含许多基因的数据框(列是“基因”)。有些基因不止一次出现。我想对只有出现不止一次的基因的数据框进行子集化。换句话说,我想删除相对于“基因”列唯一的行。
【问题讨论】:
我们可以在base R 中使用subset 和table。使用table 获取“基因”的频率计数,创建一个检查计数是否大于 1 的逻辑表达式,检索这些基因并使用%in% 对这些基因进行子集化
subset(df1, genes %in% names(which(table(genes) > 1)))
或者另一个选项是duplicated
subset(df1, duplicated(genes)|duplicated(genes, fromLast = TRUE))
或使用dplyr
library(dplyr)
df1 %>%
group_by(genes) %>%
filter(n() > 1) %>%
ungroup
【讨论】:
这是另一个基本 R 选项,使用 subset + ave
subset(df, ave(gene,gene,FUN = length)>1)
【讨论】: