找到第一个实例并使用R复制到另一个数据帧

找到第一个实例并使用R复制到另一个数据帧,r,R,我有一个按姓名排列的人的数据框架——他们都是唯一的条目。 我有第二个付款数据框,其中一些人在付款日期付款 我想做的是在我的唯一姓名数据框中附加个人首次付款的日期。 下面是一些示例数据和我正在使用的代码 Name payment date Fred 01/01/2018 Jim 01/01/2018 Barney 01/01/2018 Fred 01/03/2018 John 01/02/2018 Jim 01/03/2018 Fred 01/04/

我有一个按姓名排列的人的数据框架——他们都是唯一的条目。 我有第二个付款数据框,其中一些人在付款日期付款

我想做的是在我的唯一姓名数据框中附加个人首次付款的日期。
下面是一些示例数据和我正在使用的代码

 Name   payment date
 Fred   01/01/2018
 Jim    01/01/2018
 Barney 01/01/2018
 Fred   01/03/2018
 John   01/02/2018
 Jim    01/03/2018
 Fred   01/04/2018
 John   01/04/2018
 Barney 01/02/2018
 Barney 01/03/2018
 Jim    01/05/2018
 Fred   01/06/2018
names dataframe包括一些尚未付款的人,因此,当我进行匹配时,我希望为该人返回一个“NA”,因此该表如下所示:

 Name   first payment
 Fred   01/01/2018
 Jim    01/01/2018
 Rodney NA
 Barney 01/01/2018
 John   01/02/2018
我已运行以下代码按付款日期对付款数据框进行排序

payments<-payments[order(payments$paymentdate),]

payments您可以过滤付款的数据帧(我称之为“第二个数据帧”),使其仅由一个人进行第一次付款,然后按名称合并两个表:

library(dplyr)

# Filter
second_dataframe <- second_dataframe %>% group_by(Name) %>% summarise(`first payment`=min(`payment date`))

#Merge
merge(first_dataframe, second_dataframe, by="Name", all=TRUE) 
库(dplyr)
#滤器
第二个数据帧%group\U by(名称)%%>%摘要(`first payment`=min(`payment date`))
#合并
合并(第一个数据帧,第二个数据帧,by=“Name”,all=TRUE)

左联合(df1,df2,by=“ID”)
函数在这里工作吗?似乎不工作。我先试了一下,似乎很管用——谢谢。我已经将“max”改为“min”来获取第一个,但如果我想获取最后一个,我可能会使用max?这是否意味着不需要首先按日期变量对数据帧进行排序?如果是,则应为“min”。另外,我在合并函数中添加了“all=TRUE”(这样它将保留所有NAs)。是的,您不需要首先按日期变量对数据帧进行排序。
Error in `$<-.data.frame`(`*tmp*`, firstpayment, value = list(paymentdate = c15247,  : 
replacement has 10288 rows, data has 14610
library(dplyr)

# Filter
second_dataframe <- second_dataframe %>% group_by(Name) %>% summarise(`first payment`=min(`payment date`))

#Merge
merge(first_dataframe, second_dataframe, by="Name", all=TRUE)