提取在 R 数据帧的另一个变量的两个因子水平上至少出现两次的变量值
Extract value of a variable that apears at least twice on two factor levels of an other variable of R dataframe
我有一个数据框 (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。例如在上面的 df
, mir-1' is predicted by database
A,
Band
C` 中,因此,我想要的结果是:
database minrna genesymbol
A mir-1 abc
B mir-1 abc
c mir-1 abc
我曾尝试搜索类似的问题,但找不到与此类似的内容。你能帮我解决这个问题吗?谢谢你。
使用 {dplyr} 包中的 group_by
函数,我会让你弄清楚细节作为一种练习。
我们可以计算每个 minrna
的唯一 database
的数量,并基于此进行过滤。
这可以在 base 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")
我有一个数据框 (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。例如在上面的 df
, mir-1' is predicted by database
A,
Band
C` 中,因此,我想要的结果是:
database minrna genesymbol
A mir-1 abc
B mir-1 abc
c mir-1 abc
我曾尝试搜索类似的问题,但找不到与此类似的内容。你能帮我解决这个问题吗?谢谢你。
使用 {dplyr} 包中的 group_by
函数,我会让你弄清楚细节作为一种练习。
我们可以计算每个 minrna
的唯一 database
的数量,并基于此进行过滤。
这可以在 base 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")