1
votes

En R: Comment générer un sous-ensemble d'une table de données en fonction de ses éléments communs avec deux listes de caractères

Je suis resté coincé dans ce problème et je ne sais pas quelle approche est la plus efficace! Je souhaite générer une table de données basée sur deux listes de caractères: Ma première table de données est:

    sample 1   sample 2     N
   a         b              2
   c         c              1
   b         c              3
   c         d              2       
   a         c              3

si les listes sont:

List1= list('a','b')
List2= list('c')

Maintenant, je veux regarder le " sample1 " et trouvez le sous-ensemble du tableau de données ci-dessus basé sur les deux listes.

Le résultat que je recherche est:

sample 1   sample 2     N
   a         b          2
   c         c          1
   b         c          3
   c         d          2
   a         c          3
   d         f          1
   d         h          3

J'apprécierais votre aide sur celui-ci.


3 commentaires

Le [] n'est pas une liste R. Vouliez-vous dire List1 = list ('a', 'b') ou List1 = c ('a' , 'b')


Mon mauvais, Liste 1 = liste ('a', 'b')


Veuillez formater votre code. Ce devrait être list ('a', 'b')


3 Réponses :


0
votes
List1 = list('a', 'b')
List2= list('c')
DT <- fread(
"sample 1,  sample 2,  N
 a,         b,          2
 c,         c,          1
 b,         c,          3
 c,         d,          2
 a,         c,          3
 d,         f,          1
 d,         h,          3")

0 commentaires

1
votes

Y a-t-il quelque chose qui vous empêche de combiner les listes puis de filtrer par le résultat?

Par exemple:

list <- c(unlist(List1), unlist(List2))
df <- filter(df, `sample 1` %in% list)


0 commentaires

0
votes

Nous pouvons utiliser le sous-ensemble de la base R

df2 <- structure(list(sample1 = c("a", "c", "b", "c", "a", "d", "d"), 
sample2 = c("b", "c", "c", "d", "c", "f", "h"), N = c(2L, 
1L, 3L, 2L, 3L, 1L, 3L)), class = "data.frame", row.names = c(NA, 
-7L))

List1 <- list('a', 'b')
List2 <- list('c')

données

subset(df2, sample1 %in% unlist(c(List1, List2)))

p>


0 commentaires