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

基于条件统计DataFrame值被另一DataFrame超过的次数及交易汇总

解决交易数据汇总及值比较统计问题

嘿,我来帮你搞定这两个R语言数据处理的问题,咱们一步步来:

1. 生成交易数据的汇总DataFrame

首先先确认你提供的交易数据,先把代码和对应的表格摆出来:

Transactions <- data.frame(Size=c("S","S","S","S","L","L","S","L"), 
                           Color=c("R","R","R","B","R","B","B","R"), 
                           Year=c(1,1,2,1,1,1,2,2))

对应的表格:

SizeColorYear
SR1
SR1
SR2
SB1
LR1
LB1
SB2
LR2

要生成你需要的汇总表,按Size和Color分组统计各年份交易数+总次数,用dplyr包最方便(没装的话先跑install.packages("dplyr")):

library(dplyr)

# 生成汇总表:按Size-Color组合分组,统计各年份交易数和总次数
summary_df <- Transactions %>%
  group_by(Size, Color) %>%
  summarize(
    Year1_Count = sum(Year == 1),  # 第1年的交易数
    Year2_Count = sum(Year == 2),  # 第2年的交易数
    Total_Count = n(),             # 该组合的总交易数
    .groups = "drop"  # 取消分组,返回普通DataFrame
  )

print(summary_df)

运行后得到的结果完全符合你提到的SR交易情况:

# A tibble: 4 × 5
  Size  Color Year1_Count Year2_Count Total_Count
  <chr> <chr>       <int>       <int>       <int>
1 L     B               1           0           1
2 L     R               1           1           2
3 S     B               1           1           2
4 S     R               2           1           3

2. 统计一个DataFrame的值被另一个DataFrame的值超过的次数

我先假设一个常见的场景:比如你有一个汇总好的目标DataFrame(就是上面的summary_df),还有一个参考阈值DataFrame,需要统计目标数据中哪些值超过了对应参考阈值的次数。咱们用具体例子来演示:

第一步:先定义参考阈值DataFrame

比如我们给每个Size-Color组合设定一个总交易数的阈值:

reference_df <- data.frame(
  Size = c("L", "L", "S", "S"),
  Color = c("B", "R", "B", "R"),
  Threshold = c(1, 1, 1, 2)  # 对应组合的阈值
)

第二步:关联两个DataFrame

通过Size和Color把两个表合并,这样就能把每个组合的阈值和实际统计值对应起来:

combined_df <- summary_df %>%
  left_join(reference_df, by = c("Size", "Color"))

第三步:判断并统计超过次数

先添加一列标记是否超过阈值,再统计符合条件的行数:

# 新增列:标记Total_Count是否超过对应Threshold
combined_df <- combined_df %>%
  mutate(Is_Exceed = Total_Count > Threshold)

# 统计超过阈值的总次数
exceed_count <- sum(combined_df$Is_Exceed, na.rm = TRUE)

# 输出结果
cat("超过阈值的总次数:", exceed_count, "\n")

运行后会输出超过阈值的总次数: 1,因为只有S-R组合的总交易数(3)超过了设定的阈值(2)。

如果你的需求是其他维度的比较(比如按年份的交易数和阈值对比),只需要把Total_Count换成对应的Year1_Count或Year2_Count就行,逻辑是一样的。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 07:05:26