【问题标题】:Comparing values of column between two dataframes in R [duplicate]比较R中两个数据帧之间的列值[重复]
【发布时间】:2020-08-07 22:43:25
【问题描述】:

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

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

在Position列中,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 的所有列。这将代表公司 2 中曾经在公司 1 工作过的当前员工。

尽管如此,我还需要知道他们之前在公司 1 的工作职位,这就是为什么我需要生成的数据框有一个新列,该列的位置为 df1。

类似这样的:

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

我搜索了其他问题,但没有成功。

谢谢

【问题讨论】:

标签: r dataframe compare


【解决方案1】:

你可以试试这个方法

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

【讨论】:

    猜你喜欢
    • 2018-01-26
    • 2018-09-27
    • 1970-01-01
    • 2017-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-11
    相关资源
    最近更新 更多