一如既往的任何帮助。我每天都有湖泊深度数据(每天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
我很困惑!提前致谢
答案 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")
希望这会有所帮助,欢呼