Comment effectuer une RECHERCHEV (similaire à Excel) dans R



La fonction RECHERCHEV dans Excel vous permet de rechercher une valeur dans un tableau en la faisant correspondre sur une colonne.

Par exemple, dans la feuille de calcul Excel suivante, nous pouvons rechercher le nom de l’équipe d’un joueur en utilisant RECHERCHEV pour faire correspondre le nom du joueur et renvoyer l’équipe du joueur :

Nous pouvons répliquer cette fonction en utilisant base R ou le package dplyr :

Utilisation de Base R :

merge(df1, df2, by="merge_column")

Utilisation de dplyr :

inner_join(df1, df2, by="merge_column")

Les exemples suivants montrent comment utiliser chacune de ces fonctions dans R pour répliquer la fonction RECHERCHEV à partir d’Excel.

RECHERCHEV utilisant Base R

Le code suivant montre comment exécuter une fonction similaire à RECHERCHEV en base R en utilisant la fonction merge() :

#create first data frame
df1 <- data.frame(player=LETTERS[1:15],
                  team=rep(c('Mavs', 'Lakers', 'Rockets'), each=5))

#create second data frame 
df2 <- data.frame(player=LETTERS[1:15],
                  points=c(14, 15, 15, 16, 8, 9, 16, 27, 30, 24, 14, 19, 8, 6, 5))

#merge the two data frames
merge(df1, df2, by="player")

   player    team points
1       A    Mavs     14
2       B    Mavs     15
3       C    Mavs     15
4       D    Mavs     16
5       E    Mavs      8
6       F  Lakers      9
7       G  Lakers     16
8       H  Lakers     27
9       I  Lakers     30
10      J  Lakers     24
11      K Rockets     14
12      L Rockets     19
13      M Rockets      8
14      N Rockets      6
15      O Rockets      5

Notez que cela renvoie les mêmes résultats que la fonction RECHERCHEV de l’exemple d’introduction. Notez également que vous pouvez spécifier plusieurs colonnes à fusionner à l’aide de l’argument by .

RECHERCHEV utilisant dplyr

library(dplyr)

#create first data frame
df1 <- data.frame(player=LETTERS[1:15],
                  team=rep(c('Mavs', 'Lakers', 'Rockets'), each=5))

#create second data frame 
df2 <- data.frame(player=LETTERS[1:15],
                  points=c(14, 15, 15, 16, 8, 9, 16, 27, 30, 24, 14, 19, 8, 6, 5))

#merge the two data frames using inner_join
inner_join(df1, df2, by="player")

   player    team points
1       A    Mavs     14
2       B    Mavs     15
3       C    Mavs     15
4       D    Mavs     16
5       E    Mavs      8
6       F  Lakers      9
7       G  Lakers     16
8       H  Lakers     27
9       I  Lakers     30
10      J  Lakers     24
11      K Rockets     14
12      L Rockets     19
13      M Rockets      8
14      N Rockets      6
15      O Rockets      5

Notez que cela renvoie les mêmes résultats que la fonction RECHERCHEV dans Excel. Notez également que vous pouvez spécifier plusieurs colonnes à fusionner à l’aide de l’argument by .

De plus, si vous souhaitez que les non-correspondances soient affichées, vous pouvez utiliser la fonction left_join .

Ressources additionnelles

Comment calculer les sommes cumulées dans R
Comment standardiser les données dans R
Comment ajouter des lignes à un bloc de données dans R

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *