Comment comparer deux séries de valeurs avec R ?

2348
Il est souvent utile de pouvoir comparer deux séries de données en algorithmique. Il existe quelques fonctions qui permettent ceci :

#Prenons 2 séries de valeurs
    x=c(1,5,8,6,4,9,3,8)
    y=c(5,5,4,3,8,7,7)

La fonction union(x,y) donne un vecteur composé des éléments qui se trouvent dans x ou dans y (union de x et de y).

 
    union(x,y)  #donnera 1 5 8 6 4 9 3 7
    union(y,x)  #donnera 5 4 3 8 7 1 6 9

NB : on obtient le même résultat avec

 
    unique(c(x,y))

La fonction intersect(x,y) donne un vecteur composé des éléments qui se trouvent à la fois dans x et dans y (intersection de x et de y).

 
     intersect(x,y)  #donnera 5 8 4 3
     intersect(y,x)  #donnera 5 4 3 8

Le changement d’ordre des vecteurs x et y dans ces deux fonction ci-dessus n’affecte pas les éléments contenus dans les résultats (excepté leur ordre).

La fonction setdiff(x,y) donne tous les éléments de x qui ne sont pas dans y. Attention setdiff(y,x) donnera tous les éléments de y qui ne sont pas dans x, donc le résultat ne sera pas le même.

 
    setdiff(x,y)  #donnera 1 6 9
    setdiff(y,x)  #donnera 7

La fonction setequal(x,y) retourne la valeur TRUE si x est le même vecteur que y, FALSE sinon.

 
    setequal(x,y)  #donnera FALSE

La fonction is.element(x,y) retourne un vecteur de la longueur de x composé des valeurs TRUE si l’élément de x se trouve également dans y (n’importe où) et FALSE sinon.

 
    is.element(x,y)  #donnera FALSE TRUE TRUE FALSE TRUE FALSE TRUE TRUE 
    #car les éléments qui sont à la 1ère, 4ème et 6ème place dans le vecteur x (c'est-à-dire 1, 6 et 9) ne sont #pas des éléments de y tandis que tous les autres le sont
    is.element(y,x)  #donnera TRUE TRUE TRUE TRUE TRUE FALSE FALSE 
    #car les 5 premiers éléments de y sont également des éléments de x tandis que les deux derniers ne le sont pas

Cette liste n’est pas exhaustive. Il existe d’autres fonctions qui peuvent servir telles que :

 
    ?all #qui permet de regarder si une condition est remplie à chaque fois
    all(x<=y)  #renvoie TRUE si tous les éléments de x sont inférieurs ou égaux aux éléments de y qui sont à la même place dans le vecteur --> ATTENTION x et y doivent être de même longueur
    ?any #qui permet de regarder si une condition est remplie sur certains éléments de x et y
    any(x<=y)  #renvoie TRUE si certains des éléments de x sont inférieurs ou égaux aux éléments de y qui sont à la même place dans le vecteur --> ATTENTION x et y doivent être de même longueur 
    #Exemples :
    x=c(4,5,6)
    y=c(4,6,5)
    all(x<=y)   #renvoie FALSE car l'élément 3 de x (=6) est supérieur à l'élément 3 de y (=5)
    any(x<=y) #renvoie TRUE car les éléments 1 et 2 de x (=4 et 5 respectivement) sont inférieurs ou égaux aux #éléments 1 et 2 de y (=4 et 6 respectivement)
    all(x>=y)   #renvoie FALSE car les éléments 1 et 2 de x (=4 et 5 respectivement) sont inférieurs ou égaux aux éléments 1 et 2 de y (=4 et 6 respectivement) 
    any(x>=y) #renvoie TRUE car  l'élément 3 de x (=6) est supérieur à l'élément 3 de y (=5)