按R中的唯一ID和最近日期对数据帧进行子集设置



下午好!

目前,我正在使用一个大型数据库,该数据库包含借款人如何支付贷款的各种信息

示例如下:

Loan_ID <- c(1, 1, 1, 2, 2, 2)
Execution_Sum <- c(1000, 900, 800, 500, 600, 400)
Execution_Date <- c("2022-03-10", "2022-03-15", "2022-03-17", "2022-03-11", "2022-03-22", "2022-03-29")
df <- data.frame(Loan_ID, Execution_Sum, Execution_Date)
df$Execution_Date <- as.Date(df$Execution_Date)

我有三列:唯一的贷款ID、Execution_Sum(借款人支付的金额)和Execution_Date(实际付款时间)。

问题是,我想创建我的数据帧的一个子集,为每个唯一的贷款(每个唯一的ID)只获得一行,这样这一行就不会反映借款人的所有付款,而是只反映最接近预定日期的一行(在我的情况下是2022年3月31日)

因此,期望的结果应该是:

1800,";2022-03-17";和2400,";2022-03-29";

因为这两个日期最接近2022年3月31日

有可能创建这种子集吗?

非常感谢您提供的任何帮助!

我们可以在行(which.min)上slice,该行给出了abs解决方案min,在通过"Loan_ID"分组后,"Execution_Date"和预定日期之间的最小差值

library(dplyr)
df %>%
group_by(Loan_ID) %>% 
slice(which.min(abs(Execution_Date - as.Date("2022-03-31")))) %>%
ungroup

-输出

# A tibble: 2 × 3
Loan_ID Execution_Sum Execution_Date
<dbl>         <dbl> <date>        
1       1           800 2022-03-17    
2       2           400 2022-03-29    

最新更新