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

R语言:识别并汇总当月新增账户余额的技术问询

解决方法:提取每个账户首次出现的余额并按月份汇总

要实现“汇总每个月首次出现(新增)的账户余额”的需求,我们需要先定位每个账户第一次有非NA余额的记录,再按月份对这些新增账户的余额进行汇总。以下是两种常用的R语言实现方法:

第一步:修正并确认数据

首先先修正你提供的数据代码(去掉多余的...),确保数据框正确创建:

Accounts <- c('A','B','C','A','B','C','A','B','C')
Dates <- as.Date(c('2016-01-31', '2016-01-31','2016-01-31','2016-02-28','2016-02-28','2016-02-28','2016-03-31','2016-03-31','2016-03-31'))
Balances <- c(100,NA,NA,90,50,NA,80,40,120)
Origination <- data.frame(Dates, Accounts, Balances)

方法一:使用tidyverse(dplyr)实现

这是最直观的方法,适合熟悉tidy语法的用户:

library(dplyr)

# 1. 提取每个账户首次出现的非NA余额记录
first_valid_balances <- Origination %>%
  # 先过滤掉无余额(NA)的记录
  filter(!is.na(Balances)) %>%
  # 按账户分组
  group_by(Accounts) %>%
  # 保留每组的第一条记录(即首次有余额的记录)
  slice(1) %>%
  # 取消分组
  ungroup()

# 2. 按月份汇总新增账户的余额及账户列表
monthly_summary <- first_valid_balances %>%
  group_by(Dates) %>%
  summarize(
    total_new_balance = sum(Balances),  # 当月新增账户余额总和
    new_accounts = paste(Accounts, collapse = ", ")  # 当月新增的账户列表
  ) %>%
  ungroup()

# 查看结果
print("每个账户首次余额记录:")
print(first_valid_balances)
print("\n每月新增账户余额汇总:")
print(monthly_summary)

运行后会得到:

  • first_valid_balances:每个账户第一次有余额的详细记录
  • monthly_summary:按月份统计的新增账户余额总和及对应的账户列表

方法二:使用Base R实现

如果你不想加载额外包,可以用Base R完成相同操作:

# 1. 过滤出有余额的记录
non_na_records <- Origination[!is.na(Origination$Balances), ]

# 2. 找出每个账户首次出现的索引(去重,保留第一个)
first_occurrence_indices <- !duplicated(non_na_records$Accounts)

# 3. 提取首次余额记录
first_valid_balances_base <- non_na_records[first_occurrence_indices, ]

# 4. 按月份汇总
monthly_summary_base <- aggregate(
  Balances ~ Dates, 
  data = first_valid_balances_base, 
  FUN = sum,
  na.rm = TRUE
)
# 添加当月新增账户列表
monthly_summary_base$new_accounts <- aggregate(
  Accounts ~ Dates, 
  data = first_valid_balances_base, 
  FUN = function(x) paste(x, collapse = ", ")
)$Accounts

# 查看结果
print("每个账户首次余额记录(Base R):")
print(first_valid_balances_base)
print("\n每月新增账户余额汇总(Base R):")
print(monthly_summary_base)

关键逻辑说明

  • 我们先过滤掉Balances为NA的记录,因为这些是没有有效余额的条目
  • 对每个账户只保留第一条有效余额记录,这就是该账户首次出现的余额
  • 最后按月份分组,即可得到每个月新增的账户及其余额汇总

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:19:45