r - 使用跨越数年的大型数据集计算 R 中的月平均值

标签 r date average

我环顾四周,但没有找到完全符合我的问题的解决方案。

我有一个数据集 (df1),其中包含从 1945 年到 1981 年的每日河流流量读数 - 所以这是一个非常大的数据集。

我想计算每年每个月的平均流量。我可以使用数据透视表在 Excel 中执行此操作,但我想知道在 R 中是否会更省力。

我的问题是双重的。首先,我无法将日期转换为实际日期格式(尽管尝试了推荐代码),其次,对日期进行排序后,我不确定如何汇总数据集中每年的月平均值。我是 R 的新手 - 我一直在尽可能地查找教程,但这个特定问题似乎没有容易找到的解决方案。

所以,我的数据是这样的:

         X1    X2
1 01/10/1945 0.835
2 02/10/1945 0.835
3 03/10/1945 0.835
4 04/10/1945 0.835
5 05/10/1945 0.835
6 06/10/1945 0.433

日期最初是字符格式,所以我使用代码

df1$X1<-as.Date(df1$X1,"%m/%d/%Y")

尝试将其转换为日期格式,但由于某种原因,它一直在搞砸,日期中有几个空白:

8132  1968-05-01  4.163
8133  1968-06-01  4.134
8134  1968-07-01  1.464
8135  1968-08-01  1.682
8136  1968-09-01  1.036
8137  1968-10-01  0.564
8138  1968-11-01  0.575
8139  1968-12-01  0.547
8140        <NA> 10.590
8141        <NA> 16.760
8142        <NA>  3.879
8143        <NA> 11.410

日期以 12 个为一组显示,所以我假设问题与“月”的混淆有关,但我尝试了几种不同的 d/m/Y 组合,但没有一个有效。

综上所述,

  • 如何将跨越多年的数据转换为日期格式而不会使 R 变得困惑?
  • 对日期进行排序后,当我的数据跨越多年时,如何生成月平均值?

非常感谢,

最佳答案

我建议使用 Lubridate 来转换您的日期,并使用 dplyr 来操作您的数据框。查看您的数据,您的日期格式似乎是日/月/年(dmy with Lubridate)。

假设您的数据框称为 df :

library(dplyr)
library(lubridate)

df <- mutate(df, X1 = dmy(X1),Year = year(X1), Month = month(X1))
df <- group_by(df, Month, Year)
df <- summarise(df, result = mean(X2) )

您甚至可以链接这些命令以使其更短:

df <- df %>%
  mutate( X1 = dmy(X1),Year = year(X1), Month = month(X1)) %>%
  group_by(Month, Year) %>%
  summarise(result = mean(X2) )

希望这对您有所帮助。

关于r - 使用跨越数年的大型数据集计算 R 中的月平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36205472/

相关文章:

R - 每个文档的文章之间的相关性

r - 如何在 R 中读取一行一行的 CSV?

Java:日期和偏移量问题?

java - 格式日期从 8 月 14 日到 YYYYMMDD

sql - 如何从日期时间中删除时间

matlab - 沿第 3 个维度平均每 4 个条目

r - 将线图(第一个数据集)的facet_wrap与点图(第二个数据集)的facet_wrap结合在单个图上

r - 如何阻止 ggplot2 将矩阵旋转 90 度?

python - pandas:计算出每天每只股票的平均值和总值(value)

performance - 在恒定时间内更新连续数字序列的平均值