Извлечь значение переменной, которая появляется как минимум дважды на двух уровнях фактора другой переменной R-кадра данных - PullRequest
0 голосов
/ 20 апреля 2020

У меня есть фрейм данных (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 , B and C` и, следовательно, желаемый результат будет:

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

Я пытался искать похожие вопросы, но я не мог найти что-то похожее на это. Не могли бы вы помочь мне решить это. Спасибо.

Ответы [ 2 ]

2 голосов
/ 20 апреля 2020

Мы можем подсчитать количество уникальных 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")
0 голосов
/ 20 апреля 2020

Используйте функцию group_by из пакета {dplyr}, я позволю вам разобраться в деталях в форме упражнения.

https://dplyr.tidyverse.org/

...