J'ai une donnée de données comme ceci:
VisitID | Item | 1 | A | 1 | B | 1 | C | 1 | D | 2 | A | 2 | D | 2 | B | 3 | B | 3 | C |
4 Réponses :
Nous pouvons sélectionner des groupes où ou dans la base R: p> et dans tout code>
(code> a
'a' code> ou
'b' code>.
datable.table code> p>
df <- structure(list(VisitID = c(1L, 1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L,
4L, 4L), Item = structure(c(1L, 2L, 3L, 4L, 1L, 4L, 2L, 2L, 3L,
4L, 3L), .Label = c("A", "B", "C", "D"), class = "factor")),
row.names = c(NA, -11L), class = "data.frame")
Il semble que vous obtenez également des articles avec «C» et «D» dans votre DLIPR CODE> Approche. Avez-vous voulu dire
filtre (article% en% C ('A', 'B')) code>? Vous ne voulez pas en fait utiliser
aucun code> ici puisqu'il renvoie true pour tous (à partir de l'aide "donnée à un ensemble de vecteurs logiques, c'est au moins une des valeurs vraies?").
@CBO Il est en ligne avec la sortie attendue de l'OP. Si je les ai compris correctement. Sélectionnez des groupes si "A" ou "B" est en groupe.
Je pense également qu'il est utile d'utiliser dplyr :: filtre plutôt que filtrer, car "filtrer" est une fonction dans le package STATS dans R, de sorte qu'il peut s'affronter et provoquer des messages d'erreur déroutants
@sahwahn après Bibliothèque (dplyr) code>,
Filtre code> sera masqué à partir de
Stat code>. Utiliser
:: code> pourrait être redondant.
J'ai peut-être des paramètres différents dans mon .RProfile à propos de masquer différentes bibliothèques, mais à l'aide de la bibliothèque (dplyr), puis d'appeler le filtre renvoie toujours le filtre à partir du package STATS.
@Ronakshah mon mauvais, j'ai lu trop vite ^^ ' tout code> est requis ici.
dans la base R, je ferais:
df <- data.frame(VisitID = c(1,1,1,1,2,2,2,3,3,4,4), Item = c("A", "B", "C", "D", "A", "D", "B", "B", "C", "D", "C")) do.call("rbind", lapply(split(df, df$VisitID), function(x) if(any(x[,2] %in% c("A", "B"))) x else NULL)) # VisitID Item # 1.1 1 A # 1.2 1 B # 1.3 1 C # 1.4 1 D # 2.5 2 A # 2.6 2 D # 2.7 2 B # 3.8 3 B # 3.9 3 C
Une autre condition de filtrage sans regrouper les données:
Un autre Solution Code> Solution :.
groups <- rowsum(x = as.numeric( df$Item %in% c("A", "B") ), group = df$VisitID)
df[df$VisitID %in% rownames(groups)[groups > 0] , ]