如何用R语言按城市与星期几聚合月度日均数据?
按城市和星期几分组聚合的正确实现
原代码问题说明
wday()函数参数错误:该函数仅需传入日期列,不能将city_name作为参数传入- 缺少按
city_name分组的逻辑:需要同时将城市名称和转换后的星期几作为分组维度
正确代码实现
首先确保加载dplyr和lubridate包(wday()是lubridate包的函数):
library(dplyr) library(lubridate) m_wday_summary <- df %>% # 按城市名称 + 日期对应的星期几分组(label=TRUE输出周一/周二这类可读标签) group_by(city_name, wday = wday(Date, label = TRUE)) %>% # 对x1-x3批量计算均值、最小值、最大值 summarise(across(x1:x3, list(mean = ~mean(.x, na.rm = TRUE), min = ~min(.x, na.rm = TRUE), max = ~max(.x, na.rm = TRUE))), .groups = "drop") # 可选参数:取消分组状态,返回普通数据框
示例结果说明
基于你提供的样本数据,运行后会得到如下结构的结果(仅展示部分行):
| city_name | wday | x1_mean | x1_min | x1_max | x2_mean | x2_min | x2_max | x3_mean | x3_min | x3_max |
|---|---|---|---|---|---|---|---|---|---|---|
| London | Sat | 10.0 | 10 | 10 | 12.0 | 12 | 12 | 14.0 | 14 | 14 |
| London | Sun | 8.0 | 8 | 8 | 11.0 | 11 | 11 | 5.0 | 5 | 5 |
| Glasgow | Sat | 14.0 | 14 | 14 | 19.0 | 19 | 19 | 5.0 | 5 | 5 |
内容的提问来源于stack exchange,提问作者Dome
相关产品推荐
相关产品推荐

