Como fazer um vlookup (semelhante ao excel) em r
A função VLOOKUP no Excel permite encontrar um valor em uma tabela comparando-o em uma coluna.
Por exemplo, na planilha Excel a seguir, podemos pesquisar o nome do time de um jogador usando VLOOKUP para corresponder ao nome do jogador e retornar o time do jogador:
Podemos replicar esta função usando base R ou o pacote dplyr:
Usando Base R:
merge(df1, df2, by=" merge_column ")
Usando dplyr:
inner_join(df1, df2, by=" merge_column ")
Os exemplos a seguir mostram como usar cada uma dessas funções em R para replicar a função VLOOKUP do Excel.
PROCV usando Base R
O código a seguir mostra como executar uma função semelhante a VLOOKUP na base R usando a função 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
Observe que isso retorna os mesmos resultados que a função VLOOKUP no exemplo introdutório. Observe também que você pode especificar várias colunas para mesclar usando o argumento by .
PROCV usando 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
Observe que isso retorna os mesmos resultados que a função VLOOKUP no Excel. Observe também que você pode especificar várias colunas para mesclar usando o argumento by .
Além disso, se quiser que não-correspondências sejam exibidas, você pode usar a função left_join .
Recursos adicionais
Como calcular somas cumulativas em R
Como padronizar dados em R
Como adicionar linhas a um quadro de dados em R