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関数を使用できます。