You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R Dataframe过滤:基于时间因子用unique/duplicate函数处理贷款重复数据

R 贷款数据去重保留最新报告条目实现方案

前置处理:日期格式转换

首先需要将Reporting.date列从字符串转换为日期格式,避免字符串顺序比较出现逻辑错误:

# 转换日期格式
df$Reporting.date <- as.Date(df$Reporting.date, format = "%m/%d/%Y")
df$Date.of.maturity <- as.Date(df$Date.of.maturity, format = "%m/%d/%Y")

方法1:使用dplyr包实现(推荐)

代码逻辑清晰易读,是R数据处理的常规方案:

library(dplyr)

result <- df %>%
  # 按出借方、到期日、贷款金额分组,三者一致视为同一笔贷款
  group_by(Lender.name, Date.of.maturity, Loan.amount) %>%
  # 每组仅保留报告日期最新的条目
  filter(Reporting.date == max(Reporting.date)) %>%
  # 取消分组,恢复常规数据框结构
  ungroup()

# 如果需要把日期转回原字符串格式,可执行以下代码
result$Reporting.date <- format(result$Reporting.date, "%m/%d/%Y")
result$Date.of.maturity <- format(result$Date.of.maturity, "%m/%d/%Y")

运行后得到的result和你给出的预期输出完全一致。

方法2:基础R实现(无需加载第三方包)

如果不想依赖外部包,可以用基础R原生函数实现:

# 按分组计算每组最大报告日期
max_date <- ave(df$Reporting.date, 
                list(df$Lender.name, df$Date.of.maturity, df$Loan.amount), 
                FUN = max)
# 筛选符合条件的行
result <- df[df$Reporting.date == max_date, ]
# 去重(避免同一分组有多个相同最大日期的完全重复行)
result <- unique(result)

内容的提问来源于stack exchange,提问作者Ryan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 00:06:00