使用dplyr分组与summarise_by_time汇总时报数据框尺寸不同错误如何解决
问题原因
你的代码存在两个语法错误:
- dplyr的管道操作符为
%>%,你在group_by(area)后误写为+,该符号是ggplot2的图层拼接语法,不适用于dplyr的数据处理流程,因此触发「+仅适用于等尺寸数据框」的报错。 - 你已经通过管道将
subppm传递给后续函数,无需在summarise_by_time中重复指定.data = subppm,否则会跳过前面的分组逻辑,直接对全量数据计算。
正确可运行代码
以下是基于你提供的测试数据的验证代码:
library(dplyr) library(timetk) # 测试数据生成 dates1=seq(from = as.Date('2019-01-01 00:00'), to = as.Date('2019-07-10 00:00'), by = 1) dates2=seq(from = as.Date('2019-05-01 00:00'), to = as.Date('2019-10-10 00:00'), by = 1) dates3=seq(from = as.Date('2019-03-01 00:00'), to = as.Date('2019-07-31 00:00'), by = 1) data1=data.frame(area='group1', dates=dates1) data2=data.frame(area='group2', dates=dates2) data3=data.frame(area='group3', dates=dates3) data1$DPM=rbinom(n=nrow(data1), size=1, prob=0.05) data2$DPM=rbinom(n=nrow(data2), size=1, prob=0.05) data3$DPM=rbinom(n=nrow(data3), size=1, prob=0.05) data=rbind(data1,data2,data3) # 修正后的汇总代码 histData <- data %>% group_by(area) %>% summarise_by_time( .date_var = dates, .by = "month", monthly_dpm_sum = sum(DPM, na.rm = TRUE) )
适配你原始数据的代码
将测试数据字段替换为你原始subppm的字段即可:
histData <- subppm %>% group_by(area) %>% summarise_by_time( .date_var = DateTime, .by = "month", monthly_valid_minutes = sum(DPM, na.rm = TRUE) )
运行后会自动按区域分组、按月份汇总DPM总和,不同区域的采集时间范围不一致也不会影响运行,最终会保留每个区域存在数据的月份结果。
内容的提问来源于stack exchange,提问作者etgriffiths
相关产品推荐
相关产品推荐

