如何在R中找到十进制数据的月平均值

时间:2014-07-08 15:02:34

标签: r lubridate

一如既往的任何帮助。我每天都有湖泊深度数据(每天2次观测)。我已经将日期转换为decimal_date格式,例如2000年1月2日2000.003,但需要创建月平均异常的时间序列 - 每月一个值。如果它有助于可视化,我已在数据框中附加了前几个数据的副本。

Decim_Date  Depth (cm)  Anomaly (cm)
1   2000.000    1216    78.6721
2   2000.000    1216    78.6721
3   2000.003    1216    78.6721
4   2000.003    1217    79.6721
5   2000.005    1216    78.6721
6   2000.005    1216    78.6721
7   2000.008    1215    77.6721
8   2000.008    1216    78.6721
9   2000.011    1215    77.6721
10  2000.011    1216    78.6721

我很困惑!提前致谢

1 个答案:

答案 0 :(得分:0)

对于那些感兴趣或有类似问题的人,我已经找到答案并在下面发布。注意:代码中的L.Vic和L.Kyg指的是两个湖泊,数据框中的数据如上所述。

require("lubridate"); require("xts"); require("plyr") 

# Convert to xts format and then apply monthly mean upon anomalies
x <- xts(L.Vic[,-1], as.POSIXct(L.Vic[,1], format="%d-%b-%y"))
x <- apply.monthly(x$Anomaly_cm, mean)
y <- xts(L.Kyg[,-1], as.POSIXct(L.Kyg[,1], format="%d-%b-%y"))
y <- apply.monthly(y$Anomaly_cm, mean)

# Converts xts row.names to column format and saves as data frame
L.Vic.ts <- data.frame(date=index(x), coredata(x))
L.Kyg.ts <- data.frame(date=index(y), coredata(y))

# Change to 'yyyy-mm' format, then a POSIXct date-time object, then dec-date  
L.Vic.ts$date <- strftime(strptime(L.Vic.ts$date, "%Y-%m-%d"), "%Y-%m")
L.Vic.ts$date <- parse_date_time(L.Vic.ts$date, "ym") 
L.Vic.ts$date <- decimal_date(L.Vic.ts$date)
colnames(L.Vic.ts) <- c("Decim_Date", "SWSanom")
L.Kyg.ts$date <- strftime(strptime(L.Kyg.ts$date, "%Y-%m-%d"), "%Y-%m")
L.Kyg.ts$date <- parse_date_time(L.Kyg.ts$date, "ym") 
L.Kyg.ts$date <- decimal_date(L.Kyg.ts$date)
colnames(L.Kyg.ts) <- c("Decim_Date", "SWSanom")

希望这会有所帮助,欢呼