原書 Analysis Case 3.4 以 SBA 小企業貸款資料為例,示範當資料量較大、不適合完全依賴 Excel 人工整理時,如何使用 R 建立衍生欄位、處理日期,並把貸款狀態轉成可直接分析的二元變數。
ApprovalDate 建立核准年份 ApprovalYear。lubridate 套件計算從核准到還清所經過的月份數 PaidInFullPeriod。dplyr::case_when() 建立「是否已放款」與「是否已還清」兩個二元指標。SBA 貸款資料規模較大,因此原書改用 RStudio 進行資料塑形。目標不是修改原始資料,而是在新的分析資料中新增可直接支援後續統計問題的欄位,例如核准年份、還款期間、是否已放款、是否已還清。
| 原始欄位 | 衍生欄位 | 目的 |
|---|---|---|
ApprovalDate |
ApprovalYear |
取得每筆貸款的核准年份 |
ApprovalDate • PaidInFullDate |
PaidInFullPeriod |
計算貸款從核准到還清的月份數 |
LoanStatus |
FUNDED |
判斷貸款是否曾經放款 |
LoanStatus |
PAIDOFF |
判斷貸款是否已全額還清 |
原書使用下列 R 程式邏輯:
SBALaons$ApprovalYear <- as.numeric(format(SBALaons$ApprovalDate, "%Y"))
install.packages("lubridate")
library(lubridate)
SBALaons$PaidInFullPeriod <- interval(SBALaons$ApprovalDate, SBALaons$PaidInFullDate) %/% months(1)
接著以 dplyr 與 case_when() 重新編碼貸款狀態:
FUNDED:NOT FUNDED → 0;PIF 或 CHGOFF → 1;其他 → 空白。PAIDOFF:CHGOFF → 0;PIF → 1;其他 → 空白。這些欄位把原本不方便直接計算的文字狀態,轉成可以用於後續統計分析的變數。
| 新欄位 | 原書轉換規則 |
|---|---|
ApprovalYear |
format(ApprovalDate, "%Y") → 數值年份 |
PaidInFullPeriod |
interval(ApprovalDate, PaidInFullDate) %/% months(1) → 還款期間月數 |
FUNDED |
NOT FUNDED=0;PIF/CHGOFF=1;其他=空白 |
PAIDOFF |
CHGOFF=0;PIF=1;其他=空白 |