基于DataFrame唯一case_id、最大lifecycle及指定in_out值求和qty
解决方法:计算符合条件的qty总和
针对你给出的数据集,我们需要计算每个唯一case_id对应最大lifecycle值、且in_out为"out"的qty数值之和,以下是两种可行的实现方式:
方法一:使用dplyr(tidyverse风格)
先加载dplyr包,通过分组筛选完成计算:
library(dplyr) # 处理数据并计算最终总和 total_sum <- lifes %>% # 按case_id分组 group_by(case_id) %>% # 筛选组内生命周期最大且in_out为out的行 filter(lifecycle == max(lifecycle), in_out == "out") %>% # 提取qty值并求和 summarise(group_qty = qty) %>% pull(group_qty) %>% sum() # 输出结果 print(total_sum)
方法二:使用Base R
无需额外加载包,直接用基础函数实现:
# 先计算每个case_id对应的最大lifecycle值 max_lifecycle_per_case <- tapply(lifes$lifecycle, lifes$case_id, max) # 筛选符合条件的行 target_rows <- subset(lifes, lifecycle == max_lifecycle_per_case[as.character(case_id)] & in_out == "out") # 计算总和 total_sum <- sum(target_rows$qty) # 输出结果 print(total_sum)
两种方法最终都会得到结果:45984(即17694 + 28290的和)
内容的提问来源于stack exchange,提问作者firmo23
相关产品推荐
相关产品推荐

