使用dplyr根据其他数据框添加新列

时间:2020-05-24 14:28:31

标签: r dplyr

我有两个数据帧:

enter image description here

现在,我想向第一个数据框中添加一个新字段,该字段包含第二个数据框中的Result列,但 每个日期最短的人。

因此,结果数据框应如下所示:

enter image description here

是否可以在dplyr的mutate()函数中或在R中以任何其他方式执行此操作?我尝试研究如何解决此问题,但似乎无法解决。希望你们中的任何人都知道。

2 个答案:

答案 0 :(得分:1)

我们可以为每个Datenameleft_join选择一个最小值为df1的行。

library(dplyr)
df1 %>%
  left_join(df2 %>%
              group_by(Name) %>%
              slice(which.min(Date)), by = 'Name')

答案 1 :(得分:0)

使用data.table,我们可以进行联接

library(data.table)
setDT(df1)[df2, Result := Result[which.min(Date)],on = .(Name), by = .EACHI]
df1
#   Name Age Country Result
#1: Jack  45      NL      5
#2: Lisa  43     USA     NA
#3:  Ben  12       D      9

数据

df1 <- data.frame(Name = c("Jack", "Lisa","Ben"), Age = c(45, 43, 12), 
    Country = c("NL", "USA", "D"))
df2 <- data.frame(Name = c("Jack", "Jack", "Ben"), Result = c(6, 5, 9),
     Date = as.Date(c("2002-06-09", "2001-07-23", "2001-07-23")))