La différence entre le sous-ensemble et le filtre de dplyr
Il me semble que ce sous-ensemble et le filtre (à partir de dplyr) sont d'avoir le même résultat.
Mais ma question est: est-il à un certain point, une différence de potentiel, par ex. la vitesse, la taille des données qu'il peut gérer, etc? Y sont reprises qu'il est préférable d'utiliser l'un ou l'autre?
Exemple:
library(dplyr)
df1<-subset(airquality, Temp>80 & Month > 5)
df2<-filter(airquality, Temp>80 & Month > 5)
summary(df1$Ozone)
# Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
# 9.00 39.00 64.00 64.51 84.00 168.00 14
summary(df2$Ozone)
# Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
# 9.00 39.00 64.00 64.51 84.00 168.00 14
Ce post compare
La principale différence est que
subset
, filter
,with
et [
, how-to-use-or-and-in-dplyr-to-subset-a-data-frameLa principale différence est que
subset
est livré avec un avertissement dans ?subset
: "C'est une fonction de commodité prévu pour une utilisation interactive. Pour la programmation, il est préférable d'utiliser la norme. fonctions comme [
, et en particulier du non-standard de l'évaluation de l'argument sous-ensemble peuvent avoir des conséquences imprévues." filter
est conçu pour fonctionner de manière robuste avec le reste de dplyr et la tidyverse, de façon interactive et par programme, et a une norme distincte-eval version filter_
lorsque nécessaire. Aussi, il traite des virgules comme &
.OriginalL'auteur Ruthger Righart | 2016-10-05
Vous devez vous connecter pour publier un commentaire.
Ils sont, en effet, de produire le même résultat, et ils sont très similaires dans leur concept.
L'avantage de
subset
est qu'elle est partie de la base de R et ne nécessite pas de paquets supplémentaires. Avec des échantillons de petite taille, il semble être un peu plus rapide quefilter
(6 fois plus vite dans votre exemple, mais c'est mesurée en microsecondes).Que les ensembles de données de croître,
filter
semble avantagé en terme d'efficacité. À 15 000 dossiers,filter
dépassesubset
par environ 300 microsecondes. Et soit 153 000 dossiers,filter
est trois fois plus rapide (mesurée en millisecondes).Donc, en termes de temps de l'homme, je ne pense pas qu'il y a beaucoup de différence entre les deux.
L'autre avantage (et c'est un peu d'un avantage particulier), c'est que
filter
peut fonctionner sur des bases de données SQL sans tirer sur les données en mémoire.subset
n'a tout simplement pas le faire.Personnellement, j'ai tendance à utiliser
filter
, mais seulement parce que je suis déjà à l'aide de ladplyr
cadre. Si vous ne travaillez pas avec des données de la mémoire, il ne fera pas beaucoup de différence.il pourrait y avoir une demi-douzaine de raisons pour cela. est la différence dans l'exécution assez grand pour s'en inquiéter?
sous-ensemble 1.164632 1.220479 1.717666 1.266967 1.421527 , filtre 5.314198 5.440985 5.669854 5.595846 5.793876
OriginalL'auteur Benjamin
Une autre différence pas encore mentionné, c'est que le filtre de rejets rownames, tout sous-ensemble n'est pas:
OriginalL'auteur rsmith54
Intéressant. J'essayais de voir la différence de dataset et je coulnd pas obtenir une explication sur le pourquoi de la "[" opérateur se sont comportés différemment (c'est à dire, pourquoi il a renvoyé NAs):
OriginalL'auteur Maria Wollestonecraft
Une différence aussi est que ce sous-ensemble ne fait plus de choses que ce filtre vous pouvez également sélectionner et déposez alors que vous avez deux fonctions différentes dans dplyr
OriginalL'auteur R. Prost
Un avantage supplémentaire de la
filter
est qu'il joue à nice avec des données groupées.subset
ignore groupements.Ainsi, lorsque les données sont regroupées,
subset
fera toujours référence à l'ensemble des données, maisfilter
uniquement de référence du groupe.OriginalL'auteur Albert