Мы можем подсчитать количество уникальных database
для каждого minrna
и отфильтровать на основании этого.
Это можно сделать в базе R:
subset(df, ave(database, minrna, FUN = function(x) length(unique(x))) >= 2)
# database minrna genesymbol
#1 A mir-1 abc
#3 B mir-1 abc
#5 c mir-1 abc
В dplyr
:
library(dplyr)
df %>% group_by(minrna) %>% filter(n_distinct(database) >= 2)
Или с помощью data.table
:
library(data.table)
setDT(df)[, .SD[uniqueN(database) >=2], minrna]
данные
df <- structure(list(database = c("A", "A", "B", "B", "c"), minrna = c("mir-1",
"mir-2", "mir-1", "mir-3", "mir-1"), genesymbol = c("abc", "bcc",
"abc", "xyb", "abc")), row.names = c(NA, -5L), class = "data.frame")