Як виконати vlookup (подібно до excel) у r


Функція VLOOKUP в Excel дозволяє знайти значення в таблиці, зіставивши його в стовпці.

Наприклад, у наведеній нижче електронній таблиці Excel ми можемо шукати назву команди гравця за допомогою VLOOKUP, щоб відповідати імені гравця та повернути команду гравця:

Ми можемо відтворити цю функцію за допомогою base R або пакета dplyr:

Використання Base R:

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

Використання dplyr:

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

У наведених нижче прикладах показано, як використовувати кожну з цих функцій у R для копіювання функції VLOOKUP із Excel.

VLOOKUP з використанням Base R

Наступний код показує, як виконати функцію, подібну до VLOOKUP, у базовому R за допомогою функції 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
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 .

VLOOKUP за допомогою 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
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 в Excel. Також зауважте, що ви можете вказати кілька стовпців для об’єднання за допомогою аргументу by .

Крім того, якщо ви хочете, щоб відображалися незбіги, ви можете використати функцію left_join .

Додаткові ресурси

Як обчислити кумулятивні суми в R
Як стандартизувати дані в R
Як додати рядки до кадру даних у R

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *