我环顾四周,但没有找到完全符合我的问题的解决方案。
我有一个数据集 (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/