NCEP/NCAR の再解析データから計算された COWL Index では、近年の温暖化の様子が表現できていない。一方、陸上の気温データでは、Jones のデータが良く使われるようである。そこで、Jones のデータを利用して COWL Index を計算する。なお、欠損値の扱い方はこれではまずいような気がするので、後日工夫したい。
1.
Jones データセットのページから、ASCII データの crutem2.dat.gz をダウンロードする。
2. 以下、R で次のように処理する。
JonesData <- scan("crutem2.dat")
JonesData <- matrix(JonesData,75*36)
JonesData <- JonesData[,JonesData[1,] > 1949 ] # 1950 -
JonesData <- JonesData[,JonesData[1,] < 2003 ] # - 2002
JonesData <- JonesData[,JonesData[3,]==1] # データ
JonesData <- JonesData[ rep(c(rep(F,3),rep(T,72)),36), ] # remove header
dim(JonesData) <- c(72,36,12,53)
JonesData <- JonesData[,seq(36,1,-1),,] # y reverse
#
# 重みづけを計算する。
# この時、北緯20°以北だけ計算するので、より南の部分は0とする。
#
th <- seq(-90,90,5) / 180 * pi
JDweight <- sin(th[2:37]) - sin(th[1:36])
JDweight <- t(matrix(rep(JDweight,72),36))
JDweight[,1:22] <- 0
#
# LANDMASK を作りながら平均をとる。
#
for(year in 1:53){
for( month in 1:12 ){
JDLmask <- JonesData[,,month,year]
JDLmask <- c(JDLmask)
JDLmask[JDLmask == -9999 ] <- 0
JDLmask[JDLmask != 0 ] <- 1
dim(JDLmask) <- c(72,36)
WeightMask <- JDweight * JDLmask
write(
sum( JonesData[,,month,year] * WeightMask ) / sum( WeightMask ),
file="COWLJD.txt", append=T)
}
}
COWLJD <- t(matrix( scan("COWLJD.txt"), 12 ))
#
# 3 桁で保存する。
#
options(digits=3)
write(COWLJD,file="COWLJD4.txt",ncolumns=12)