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

如何在R中计算实体间交易净额?优先采用tidyverse/dataframe方案

计算实体间交易净额的tidyverse解决方案

步骤说明

我们可以通过标准化实体对顺序、分组求和的方式,在dataframe内高效计算交易净额,具体实现如下:

1. 加载依赖并构造示例数据

library(tidyverse)

# 构造示例交易数据
transactions <- tibble(
  sending_entity = c("Tim", "Bob", "Sarah", "Jane"),
  receiving_entity = c("Bob", "Tim", "Jane", "Sarah"),
  amount_traded = c(100, 50, 25, 50)
)

2. 计算交易净额并生成结果描述

net_transactions <- transactions %>%
  # 标准化实体对顺序,确保同一组实体仅出现一次
  mutate(
    entity1 = pmin(sending_entity, receiving_entity),
    entity2 = pmax(sending_entity, receiving_entity),
    # 标记单条交易对净额的贡献方向
    net_contribution = case_when(
      sending_entity == entity1 ~ amount_traded,
      TRUE ~ -amount_traded
    )
  ) %>%
  # 按标准化实体对分组,求和得到净额
  group_by(entity1, entity2) %>%
  summarise(net_amount = sum(net_contribution), .groups = "drop") %>%
  # 生成符合需求的自然语言描述
  mutate(
    description = case_when(
      net_amount > 0 ~ str_glue("{entity1} 支付 {entity2} {net_amount}"),
      net_amount < 0 ~ str_glue("{entity2} 支付 {entity1} {abs(net_amount)}"),
      TRUE ~ "双方交易净额为0"
    )
  )

3. 查看结果

运行上述代码后,net_transactions$description会输出预期结果:

  • Tim 支付 Bob 50
  • Jane 支付 Sarah 25

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 00:15:38