Как выполнить ВПР (аналогично Excel) в R


Функция ВПР в Excel позволяет искать значение в таблице, сопоставляя столбец.

Например, на следующем листе Excel мы можем найти имя команды игрока, используя ВПР, чтобы сопоставить имя игрока и вернуть команду игрока:

Мы можем воспроизвести эту функцию, используя базу R или пакет dplyr:

Использование базы R:

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

Использование dplyr:

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

В следующих примерах показано, как использовать каждую из этих функций в R для репликации функции ВПР из Excel.

ВПР с использованием базы R

В следующем коде показано, как выполнить функцию, аналогичную ВПР в базе 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
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

Обратите внимание, что она возвращает те же результаты, что и функция ВПР из вводного примера. Также обратите внимание, что вы можете указать несколько столбцов для объединения с помощью аргумента by .

ВПР Использование 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

Обратите внимание, что это возвращает те же результаты, что и функция ВПР в Excel. Также обратите внимание, что вы можете указать несколько столбцов для объединения с помощью аргумента by .

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

Дополнительные ресурсы

Как рассчитать кумулятивные суммы в R
Как стандартизировать данные в R
Как добавить строки во фрейм данных в R