下午好!
目前我正在使用一個大型資料庫,其中包含有關借款人如何支付貸款的各種資訊
示例如下:
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_Sum(借款人支付的金額)和 Execution_Date(實際支付的時間)。
問題是我想創建我的資料框的一個子集,以便為每個唯一貸款(對于每個唯一 ID)僅獲取 1 行,這樣該行不反映借款人支付的所有款項,而只有 1 個最接近的到預定日期(在我的情況下為 2022 年 3 月 31 日)
因此,期望的結果應該是:
1, 800, "2022-03-17" 和 2, 400, "2022-03-29"
因為這兩個日期最接近 2022 年 3 月 31 日
是否可以創建這種子集?
非常感謝您提供的任何幫助!
uj5u.com熱心網友回復:
我們可以slice
在行 ( which.min
) 上給出'Execution_Date' 和按 ' abs
Loan_ID min
' 分組后的預定日期之間的最大差異
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
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/496114.html
下一篇:查找較小但最接近當前值的值