Si j'ai un fichier de données comme celui-ci:
neu <- data.frame(test1 = c(1,2,3,4,5,6,7,8,9,10,11,12,13,14),
test2 = c("a","b","a","b","c","c","a","c","c","d","d","f","f","f"))
neu
test1 test2
1 1 a
2 2 b
3 3 a
4 4 b
5 5 c
6 6 c
7 7 a
8 8 c
9 9 c
10 10 d
11 11 d
12 12 f
13 13 f
14 14 f
4 Réponses :
Trouver les lignes à l'aide de: ou: p> puis sous-ensemble avec: p> ou: p>
Thx qui a vraiment beaucoup aidé!
Pourquoi utiliser as.list code>? Pourquoi deux table (.) Code>? Et il vaut mieux ne pas utiliser sous-ensemble code>.
Voir Stratégies alternatives ci-dessus.
@Arun, vous dérange-vous d'expliquer un peu ou de lier à une raison de votre suggestion de ne pas utiliser sous-ensemble code>. La chose à propos de sous-ensemble code> est qu'il est intuitivement nommé, il est donc plus naturel de penser "je vais sous-ensemble" plutôt que ", disons", je vais utiliser % dans % code> "ou" je vais à quel code> it ...
@PatrickT sous-ensemble code> utilise une évaluation non standard, il peut donc produire des résultats inattendus. Par exemple, si vous l'utilisez à l'intérieur d'une fonction, cela ne fonctionnera généralement pas correctement ou du tout. Meilleur conseil est d'utiliser [ code> pour toute extraction.
@Patrickt, à l'époque, j'étais probablement influencé par Cet article . Bien qu'il y ait des points valables là-bas, je ne vois pas une raison de ne pas utiliser, tant que vous savez ce que vous faites. J'ai tendance à éviter de suggérer "N'utilisez jamais cela / que" ces jours-ci.
Merci @Thomas, va essayer de vous rappeler cela.
Merci pour le lien @arun. Semble effrayant! Bonne question / réponse que vous avez liée à.
J'utiliserais comptez code> à partir du package code> Plyr code> pour effectuer le comptage: library(plyr)
count_result = count(neu, "test2")
matching = with(count_result, test2[freq > 3])
with(neu, test1[test2 %in% matching])
[1] 5 6 8 9
Génial, merci beaucoup vous gars
Voici un autre moyen:
with(neu, neu[ave(seq(test2), test2, FUN=length) > 3, ]) # test1 test2 # 5 5 c # 6 6 c # 8 8 c # 9 9 c
+1 C'est de loin la meilleure solution de base pour moi.
la (meilleure mise à l'échelle) data.table code> WAY: dt[, .SD[.N >= 3], by = test2]