如何在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 中向数据框添加行

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注