R语言dplyr条件计数:如何用%>%将item b计数设为2而非3?
用dplyr管道解决无效支付记录的计数问题
当然可以实现!我们只需要在统计计数前,先过滤掉金额为0的无效支付记录,再按item分组统计就行。下面我用一个贴近你场景的示例来演示:
首先,假设你的原始数据是这样的(模拟item b有3笔记录,其中第二笔金额为0):
library(dplyr) # 模拟原始数据 payment_data <- tibble( item = c("a", "b", "b", "b", "c"), payment_amount = c(100, 50, 0, 30, 70) )
接下来用%>%管道链式操作处理:
payment_data %>% # 过滤掉金额为0的记录 filter(payment_amount != 0) %>% # 按item分组 group_by(item) %>% # 统计每个item的有效支付次数 summarise(valid_payment_count = n())
运行这段代码后,输出结果里item b的计数就会是2,刚好排除了那笔没有实际支付的0金额记录。
解释一下关键步骤:
filter(payment_amount != 0):把所有金额为0的行从数据中剔除,只保留有实际支付的记录group_by(item):按item字段分组,为后续的分组统计做准备summarise(valid_payment_count = n()):统计每个分组里的行数,也就是有效支付的次数
如果你的数据里金额字段的名称不是payment_amount,记得替换成你实际使用的字段名哦~
内容的提问来源于stack exchange,提问作者dennis
相关产品推荐
相关产品推荐

