R で vlookup (excel に似た) を実行する方法


Excel のVLOOKUP関数を使用すると、列を照合してテーブル内の値を見つけることができます。

たとえば、次の Excel スプレッドシートでは、VLOOKUP を使用してプレーヤーのチーム名を検索し、プレーヤーの名前と一致させ、プレーヤーのチームを返すことができます。

この関数は、ベース R または dplyr パッケージを使用して複製できます。

ベース R の使用:

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

dplyr の使用:

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

次の例は、R でこれらの各関数を使用して Excel から VLOOKUP 関数を複製する方法を示しています。

Base R を使用した VLOOKUP

次のコードは、 merge()関数を使用してベース R で VLOOKUP のような関数を実行する方法を示しています。

 #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
3C Mavs 15
4D Mavs 16
5 E Mavs 8
6 F Lakers 9
7G Lakers 16
8 a.m. Lakers 27
9 I Lakers 30
10 J Lakers 24
11K Rockets 14
12L Rockets 19
13 M Rockets 8
14 N Rockets 6
15 O Rockets 5

これは、入門例の VLOOKUP 関数と同じ結果を返すことに注意してください。また、 by引数を使用してマージする複数の列を指定できることにも注意してください。

dplyr を使用した VLOOKUP

 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
3C Mavs 15
4D Mavs 16
5 E Mavs 8
6 F Lakers 9
7G Lakers 16
8 a.m. Lakers 27
9 I Lakers 30
10 J Lakers 24
11K Rockets 14
12L Rockets 19
13 M Rockets 8
14 N Rockets 6
15 O Rockets 5

これは Excel の VLOOKUP 関数と同じ結果を返すことに注意してください。また、 by引数を使用してマージする複数の列を指定できることにも注意してください。

さらに、一致しないものを表示したい場合は、 left_join関数を使用できます。

追加リソース

R で累積和を計算する方法
R でデータを標準化する方法
R でデータ フレームに行を追加する方法

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です