R语言小时数据转日度数据时保留分类变量的实现方法咨询
R语言小时数据日度聚合保留分类变量实现方案
方案1:调整分组逻辑,分类变量加入分组键
因为单日24条数据的分类变量取值完全一致,将分类变量加入聚合的分组规则即可,聚合结果会自动保留对应分类值:
n <- 24 # 构造日度分组ID day_group <- gl(ceiling(nrow(day)/n), n)[1:nrow(day)] # 聚合:分组键为日度ID+两个分类变量,数值列求均值 # 请将代码中的season、weekday替换为你数据集里分类变量的实际列名 daily <- aggregate( . ~ day_group + season + weekday, data = day, FUN = mean ) # 如不需要生成的日度分组ID可删除 daily$day_group <- NULL
方案2:单独提取分类变量后合并
如果不想改动原有聚合逻辑,可以单独提取每日的分类变量值再合并到结果中:
n <- 24 # 排除分类变量,仅对数值列执行你原有聚合逻辑 # 请将代码中的season、weekday替换为你数据集里分类变量的实际列名 num_cols <- setdiff(colnames(day), c("season", "weekday")) daily <- aggregate( day[, num_cols], by = list(gl(ceiling(nrow(day[, num_cols])/n), n)[1:nrow(day[, num_cols])]), FUN = mean ) # 每24行取1条分类变量值,对应每日的分类属性 cat_vars <- day[seq(1, nrow(day), by = n), c("season", "weekday")] # 合并分类变量与聚合后的数值结果 daily <- cbind(cat_vars, daily) # 如不需要默认生成的Group.1分组列可删除 daily$Group.1 <- NULL
提示:两种方案都需要提前确认数据集按时间正序排列,保证日度分组与分类变量取值对应正确
内容的提问来源于stack exchange,提问作者Werrby
相关产品推荐
相关产品推荐

