提取在R数据帧的另一个变量的两个因子级别上至少出现两次的变量的值



我有一个数据帧(df(,类似于:

database minrna genesymbol A mir-1 abc A mir-2 bcc B mir-1 abc B mir-3 xyb c mir-1 abc

我想提取至少由两个数据库预测的mirna。例如,在上面的dfmir-1' is predicted by databaseA,BandC’中,因此,我想要的结果是:

database minrna genesymbol A mir-1 abc B mir-1 abc c mir-1 abc

我试过搜索类似的问题,但找不到类似的问题。你能帮我解决这个问题吗。非常感谢。

我们可以为每个minrna计算唯一的database的数量,并以此为基础进行过滤。

这可以在基本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")

使用{dplyr}包中的group_by函数,我会让您把细节作为一种练习形式。

https://dplyr.tidyverse.org/

最新更新