对数据框中不唯一的所有行进行子集化(基于向量/列)..或删除唯一行

new*_*ics 2 r unique subset dataframe

我有一个包含许多基因的数据框(列是“基因”)。有些基因出现不止一次。我想对数据框进行子集化,其中只有出现多次的基因。换句话说,我想删除相对于“基因”列唯一的行。

akr*_*run 5

我们可以使用subsetwith tablein base R。使用 获取“基因”的频率计数table,创建一个逻辑表达式来检查计数是否大于 1,检索这些基因并用于%in%对这些基因进行子集化

subset(df1, genes %in% names(which(table(genes) > 1)))
Run Code Online (Sandbox Code Playgroud)

或者另一个选择是duplicated

subset(df1, duplicated(genes)|duplicated(genes, fromLast = TRUE))
Run Code Online (Sandbox Code Playgroud)

或者使用dplyr

library(dplyr)
df1 %>%
   group_by(genes) %>%
   filter(n() > 1) %>%
   ungroup
Run Code Online (Sandbox Code Playgroud)