j'ai un ensemble de données de test que j'ai divisé par trimestre:Utilisation des opérateurs logiques avec% en% et sous
> test
id quarter
1 7 Q1
2 7 Q1
3 5 Q1
4 8 Q1
5 3 Q1
6 6 Q1
7 10 Q1
8 3 Q2
9 10 Q2
10 8 Q2
11 2 Q2
12 7 Q2
13 6 Q2
14 6 Q3
15 9 Q3
16 6 Q3
17 4 Q3
18 9 Q3
19 2 Q3
20 5 Q4
21 8 Q4
22 10 Q4
23 7 Q4
24 1 Q4
25 8 Q4
subsets <-split(test, test$quarter, drop=TRUE)
for (i in 1:length(subsets)) {
assign(paste0("Q", i), as.data.frame(subsets[[i]]))
}
Maintenant, mon objectif est de découvrir toutes les Identifiants uniques dans Q3
qui ne sont pas Q1
ou au Q2
. Utilisation de l'opérateur %in%
je tente:
Q1_ids <- unique(Q1$id)
Q2_ids <- unique(Q2$id)
Q3_ids <- subset(unique(Q3$id), !(unique(Q3$id) %in% Q1_ids | Q2_ids))
mais je reçois une erreur qui operations are possible only for numeric, logical or complex types
. Je peux sous-estimer un vecteur, par exemple si je n'utilise que Q1_ids, mais je ne peux pas utiliser un opérateur logique. Quelle est la solution à cela en utilisant la fonction subset()
ou une autre façon d'aborder le problème?
> dput(test)
structure(list(id = c(7, 7, 5, 8, 3, 6, 10, 3, 10, 8, 2, 7, 6,
6, 9, 6, 4, 9, 2, 5, 8, 10, 7, 1, 8), quarter = c("Q1", "Q1",
"Q1", "Q1", "Q1", "Q1", "Q1", "Q2", "Q2", "Q2", "Q2", "Q2", "Q2",
"Q3", "Q3", "Q3", "Q3", "Q3", "Q3", "Q4", "Q4", "Q4", "Q4", "Q4",
"Q4")), .Names = c("id", "quarter"), row.names = c(NA, -25L), class = "data.frame", index = structure(integer(0), "`__quarter`" = integer(0)))
Et s'il y a plus de vecteurs à inclure dans 'union()'? par exemple, si je voulais union '(Q3 $ id, Q2 $ id, Q1 $ id) '? –
vous les imbriquez: union (x, union (y, z)) –