如何在R中按分组和年份分别计算月度销售计数差值
R中计算分组年度7月与6月销量差值的最简方法
方法一:使用tidyverse工具链(推荐,代码简洁易读)
借助dplyr的分组计算能力和日期处理逻辑,通过管道操作就能快速完成需求:
library(dplyr) result <- mydata %>% mutate( year = floor(month_id / 100), # 从month_id提取年份 month = month_id %% 100 # 从month_id提取月份 ) %>% group_by(MDM_Key, year) %>% summarise( sale_count = sale_count[month == 7] - sale_count[month == 6], .groups = "drop" ) %>% arrange(MDM_Key, year) print(result)
方法二:Base R原生实现(无需额外安装包)
如果不想加载第三方包,用原生函数组合也能完成计算:
# 提取年份和月份字段 mydata$year <- floor(mydata$month_id / 100) mydata$month <- mydata$month_id %% 100 # 分组计算差值并合并结果 result <- do.call(rbind, lapply(split(mydata, list(mydata$MDM_Key, mydata$year)), function(x) { data.frame( year = unique(x$year), MDM_Key = unique(x$MDM_Key), sale_count = x$sale_count[x$month == 7] - x$sale_count[x$month == 6] ) })) # 整理行顺序并重置行名 result <- result[order(result$MDM_Key, result$year), ] rownames(result) <- seq(nrow(result)) print(result)
两种方法都能输出你需要的结果:tidyverse写法更贴合现代R数据处理的语法习惯,可读性更高;base R方法则适合无法安装第三方包的受限环境。
内容的提问来源于stack exchange,提问作者psysky
相关产品推荐
相关产品推荐

