比较R中两个数据框之间的列值

时间:2020-08-07 22:43:25

标签: r dataframe compare

我有两个具有不同行数(> 5000)和列数(〜10)的数据帧。但是,它们都包含我感兴趣的两列:“名称”和“位置”。这些是两家不同公司的历史职位。我的目标是找到在公司2(df2)工作之前在公司1(df1)工作的个人及其在这两家公司中的职位。

在每个数据框中,“名称”列均具有所有唯一值。并非df1中的所有名称都出现在df2中,而且顺序也不相同。

在“位置”列中,df中只有两个值:manager和intern。

df1 <- data.frame("Name" = c("Adam","Emma","Liz"), 
                  "Position" = c("intern","manager","intern"), 
                  "X" = c(123,321,111))

df2 <- data.frame("Name" = c("Adam","Liz","Carl","Sarah"), 
                  "Position" = c("manager","intern","intern","manager"), 
                  "Y" = c(999,987,789,777))

我需要一个代码的帮助,该代码将两个数据框中的“名称”列进行比较,并返回一个数据框,其中包含在名称中找到匹配值的那些行的df2的所有列。这代表了曾经在公司1工作过的公司2中的现有工人。

尽管如此,我还需要知道他们在公司1中的先前职位,这就是为什么我需要结果数据框具有该名称的df1位置的新列。

类似这样的东西:

result <- data.frame("Name" = c("Adam","Liz"), 
                     "Position" = c("manager","intern"), 
                     "Y" = c(999,987)
                     "Position_df1" = c("intern","intern"))

我没有成功搜索其他询问的问题。

谢谢

1 个答案:

答案 0 :(得分:0)

您可以尝试这种方法

library(tidyverse)

result <- df2 %>% 
  inner_join(df1, by = c("Name")) %>% 
  select(Name, Position = Position.x, Y, Position_df1 = Position.y)
#   Name Position   Y Position_df1
# 1 Adam  manager 999       intern
# 2  Liz   intern 987       intern