我有两个具有不同行数(> 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"))
我没有成功搜索其他询问的问题。
谢谢
答案 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