r - 将月度数据汇总为季度(平均值)
问题描述
我有数据,其中有多个月度变量。我想将这些变量汇总到季度级别。我的初始数据是:
Time A B C D . . . . . K
Jan-2004 42 57 53 28
Feb-2004 40 78 56 28
Mar-2004 68 77 53 20
Apr-2004 97 96 80 16
May-2004 84 93 76 17
Jun-2004 57 100 100 21
Jul-2004 62 100 79 22
.
.
.
.
N
所以目标是将季度计算为月平均值(sum(jan+feb+mar)/3))。换句话说,目标是最终得到这样的数据:
Time A B C D . . . . . K
2004Q1 50,0 70,7 54,0 25,3
2004Q2 79,3 96,3 85,3 18,0
2004Q3
.
.
.
N
谁能帮我解决这个问题?
非常感谢。
解决方案
一个选项是使用from将“时间”转换为yearqtr
类并执行as.yearqtr
zoo
summarise_all
library(zoo)
library(dplyr)
df1 %>%
group_by(Time = format(as.yearqtr(Time, "%b-%Y"), "%YQ%q")) %>%
summarise_all(mean)
# A tibble: 3 x 5
# Time A B C D
# <chr> <dbl> <dbl> <dbl> <dbl>
#1 2004Q1 50 70.7 54 25.3
#2 2004Q2 79.3 96.3 85.3 18
#3 2004Q3 62 100 79 22
数据
df1 <- structure(list(Time = c("Jan-2004", "Feb-2004", "Mar-2004", "Apr-2004",
"May-2004", "Jun-2004", "Jul-2004"), A = c(42L, 40L, 68L, 97L,
84L, 57L, 62L), B = c(57L, 78L, 77L, 96L, 93L, 100L, 100L), C = c(53L,
56L, 53L, 80L, 76L, 100L, 79L), D = c(28L, 28L, 20L, 16L, 17L,
21L, 22L)), class = "data.frame", row.names = c(NA, -7L))
推荐阅读
- reactjs - 如何防止更改material-ui Checkbox组件的大小
- ios - UICollectionView 每个部分一行
- tensorflow - 为什么TensorFlow在调用1D卷积时要计算2D卷积?
- r - 带字符串标签的彩条指南
- python - 最小化和重新排列列表
- java - 我无法使用 Java Mail API 发送电子邮件 电子邮件已发送但未收到或未显示在已发送的电子邮件中
- python - 如何在 ubuntu 18 中使用 python-rsvg?
- pandas - 如何将左连接与两个单独的名称合并
- sql - SQL 中的货币转换
- sql-server - 如何在sql查询中解析多个命名空间xml