r - 根据 R 中组内的每日数据计算月平均值
问题描述
我正在尝试根据数据中每个组的每日数据计算月平均值。在此示例中,有 3 个组,每个组从 2011-01-01 到 2011-03-31 进行每日观察
times <- c(31,28,31)
date = rep(seq(as.Date('2011-01-01'),as.Date('2011-03-31'),by = 1),
times=3)
id = rep(rep(1001:1003, times), each=3)
val = rnorm(length(id), mean=5, sd=2)
df <- data.frame(date, id, val)
> head(df)
date id val
1 2011-01-01 1001 6.341471
2 2011-01-02 1001 4.353585
3 2011-01-03 1001 8.131239
4 2011-01-04 1001 3.761434
5 2011-01-05 1001 6.344846
6 2011-01-06 1001 7.068889
> tail(df)
date id val
265 2011-03-26 1003 5.644132
266 2011-03-27 1003 4.949719
267 2011-03-28 1003 4.490786
268 2011-03-29 1003 1.739529
269 2011-03-30 1003 2.250610
270 2011-03-31 1003 1.853057
所需的输出应该与计算的每月值类似:
monthYear id monthlyValue
2011-01 1001 ?
2011-02 1001 ?
2011-03 1001 ?
.... .... ..
2011-01 1003 ?
2011-02 1003 ?
2011-03 1003 ?
解决方案
> output <- aggregate(df$val, list(format(df$date, "%Y-%m"), df$id), mean)
> colnames(output) <- c('monthYear', 'id', 'monthlyValue')
> print(output)
monthYear id monthlyValue
1 2011-01 1001 5.368910
2 2011-02 1001 4.701553
3 2011-03 1001 5.225284
4 2011-01 1002 5.117631
5 2011-02 1002 4.869240
6 2011-03 1002 4.595431
7 2011-01 1003 5.336175
8 2011-02 1003 5.438803
9 2011-03 1003 4.658504
推荐阅读
- r - using regular expressions (regex) to make replace multiple patterns at the same time in R
- python - 安装包 googleclient 和 fastavro 时遇到问题
- python - 如何从给定项目更改数组中的所有项目?
- smooth-scrolling - 平滑滚动偏移
- python - python 3的kivy中是否有任何将textinput(小部件)的文本访问到另一个类的方法?
- ajax - 无法在 firefox 扩展上将 Post 发送到电报 bot api,但 chrome 扩展可以
- python - 使用带有多个变量的 Cursor -python 执行 sql 命令
- swift - 使用 EarlGrey 2.0 和 Swift 敲击系统警报
- html - 更改选项标签中“选择”时文本的默认颜色
- javascript - 在这个例子中如何使用动态参数(ID)来调用axios api