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

R语言如何为收支序列数据框新增追踪金额和追踪引用列

R语言实现数据框新增追踪列解决方案

前置处理(适配原始矩阵格式数据)

如果你是用cbind生成的字符矩阵,先转换为标准数据框:

# 原始矩阵转数据框,修正字段类型
df <- as.data.frame(df, stringsAsFactors = FALSE)
df$Seq <- as.integer(df$Seq)
df$Amount <- as.numeric(df$Amount)

如果是从头构造数据,可直接生成标准数据框:

Seq <- c(1,2,3,4,5,6,7,8,9,10,11)
Direction <- c("INCOMING","OUTGOING", "INCOMING", "OUTGOING", "OUTGOING","INCOMING", "INCOMING", "OUTGOING","INCOMING", "OUTGOING", "OUTGOING")
Amount <- c(500,200,300,400,200,300,200,100,200,100,50)
df <- data.frame(Seq, Direction, Amount, stringsAsFactors = FALSE)

核心计算代码

# 1. 确保按Seq升序排列
df <- df[order(df$Seq), ]

# 2. 计算Trace_Reference追踪引用列
# 逻辑:cumsum对逻辑值按1/0累加,每遇到INCOMING编号+1,后续OUTGOING沿用当前编号
df$Trace_Reference <- as.character(cumsum(df$Direction == "INCOMING"))

# 3. 计算Traced_Amount追踪金额列
# 逻辑:INCOMING行留空,OUTGOING行取当前行Amount值
df$Traced_Amount <- ifelse(df$Direction == "INCOMING", "", as.character(df$Amount))

# 查看结果
print(df)

输出结果验证

运行后得到的结果完全匹配需求:

Seq Direction Amount Trace_Reference Traced_Amount
1    1  INCOMING    500               1              
2    2  OUTGOING    200               1           200
3    3  INCOMING    300               2              
4    4  OUTGOING    400               2           400
5    5  OUTGOING    200               2           200
6    6  INCOMING    300               3              
7    7  INCOMING    200               4              
8    8  OUTGOING    100               4           100
9    9  INCOMING    200               5              
10  10  OUTGOING    100               5           100
11  11  OUTGOING     50               5            50

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 01:27:01