下午好

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

示例如下:

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)

我有3列:唯一贷款ID、Execution\u Sum(借款人支付的金额)和Execution\u Date(实际支付的时间).

问题是,我想创建数据帧的子集,以便 for each 唯一贷款(每个唯一ID)仅获取1行,这样一来,这一行不会反映借款人所做的所有付款,而只反映最接近预定日期的1行(我的情况是2022年3月31日)

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

1, 800, "2022-03-17"

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

是否可以创建此类子集?

非常感谢您的帮助!

推荐答案

我们可以在第(which.min)行中 Select slice,该行给出了"执行日期"和按"贷款ID"分组后的预定日期之间的abs个绝对min mm的差值

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    

R相关问答推荐

是什么导致R中的mvtnorm包中出现这个错误?

R kableExtra在插入水平线时添加额外的空白行

从字符载体创建函数参数

如何在ggplot 2 geom_segment图表中将UTC转换为EET?

使用R中的gt对R中的html rmarkdown文件进行条件格式设置表的单元格

更改Heatmap Annotation对象的名称

如何根据组大小应用条件过滤?

如何利用模型函数在格图中添加双曲/指数曲线

根据多个条件增加y轴高度以适应geom_text标签

在RStudio中堆叠条形图和折线图

如何用书面利率绘制geom_bar图

方法::slotName如何处理非类、非字符的参数?

合并后返回列表的数据帧列表

基于R中的间隔扩展数据集行

TreeNode打印 twig 并为其上色

删除数据帧中特定行号之间的每第三行和第四行

在R中的数据框上使用Apply()函数时,如何保留非数字列?

计算来自单独分组的分幅的值的百分位数

隐藏基于 case 总数的值

在REST API中使用参数R