簡體   English   中英

計算時間序列的異常

[英]calculation of anomalies on time-series

我想計算幾個站點的時間序列的月溫度異常。 我在這里稱“異常”是單個值與一個時期計算的平均值的差異。

我的數據框看起來像這樣(我們稱之為“數據”):

Station Year Month Temp
A 1950 1 15.6
A 1980 1 12.3
A 1990 2 11.4
A 1950 1 15.6
B 1970 1 12.3
B 1977 2 11.4
B 1977 4 18.6
B 1980 1 12.3
B 1990 11 7.4

首先,我制作了一個包含1980年到1990年之間年份的子集:

data2 <- subset(data, Year>=1980& Year<=1990)

其次,我使用plyr計算1980年到1990年間每個站點的月平均值(我們稱之為“MeanBase”):

data3 <- ddply(data2, .(Station, Month), summarise,
               MeanBase = mean(Temp, na.rm=TRUE))

現在,我想為每一行數據計算相應的MeanBase和Temp的值之間的差異...但我不確定是否正確(我不知道如何使用)數據3)。

你可以在基數R中使用ave來獲得這個。

transform(data, 
          Demeaned=Temp - ave(replace(Temp, Year < 1980 | Year > 1990, NA), 
                              Station, Month, FUN=function(t) mean(t, na.rm=TRUE)))

#   Station Year Month Temp Demeaned
# 1       A 1950     1 15.6 3.3
# 2       A 1980     1 12.3 0.0
# 3       A 1990     2 11.4 0.0
# 4       A 1950     1 15.6 3.3
# 5       B 1970     1 12.3 0.0
# 6       B 1977     2 11.4 NaN
# 7       B 1977     4 18.6 NaN
# 8       B 1980     1 12.3 0.0
# 9       B 1990    11  7.4 0.0

對於月份 - 站點組合,結果列將具有NaN ,該組合在指定范圍內沒有年份。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM