我有两个数据帧:
现在,我想向第一个数据框中添加一个新字段,该字段包含第二个数据框中的Result列,但仅 每个日期最短的人。
因此,结果数据框应如下所示:
是否可以在dplyr的mutate()
函数中或在R中以任何其他方式执行此操作?我尝试研究如何解决此问题,但似乎无法解决。希望你们中的任何人都知道。
答案 0 :(得分:1)
我们可以为每个Date
和name
与left_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")))