NOAA (CPC Unified gaage) から netcdf 形式の月間降水量データをダウンロードしました。データは mm/day で保存されており、各レイヤーにそれぞれの月のカウントを掛けて、その月の総降水量を取得する必要があります。たとえば、1969 年 9 月のレイヤーは 30 倍され、2 月のレイヤーは 28 倍されます。また、2 月のレイヤーに 29 倍しなければならない閏年の問題もあります。
いくつかのコードを試しましたが (以下を参照)、機能しません。
prec <- brick(precip.V1.0.mon.mean.nc)
conv <- function(x, ...) {
ifelse(x == c(01, 03, 05, 07, 08, 09, 10, 12),
31 * x,
x,
ifelse(x == c(04, 06, 11),
30 * x,
x,
ifelse(x == 02,
28 * x,
x)))
} # function for the conversion
## pulling out date indices for each month
indices <- as.numeric(format(as.Date(names(prec), format = "X%Y.%m.%d"), format = "%m"))
## applying the function using stackApply
new_prec <- stackApply(prec, indices, fun = conv)
ifelse(x == c(1, 2, 3, 5, 7, 8, 9, 10, 12), 31 * x, x, ifelse(x == : 未使用の引数 (ifelse(x == c( 4, 6, 11), 30 * x, x, ifelse(x == 2, 28 * x, x)))
そして、簡略化されたバージョン (例) ifelse(x == 12, 30*x, x) を使用して関数を渡そうとすると、次のエラーが発生しました
エラー: (関数 (..., deparse.level = 1) のエラー: 行列の行数が一致する必要があります (引数 2 を参照)
誰かが変換のヒントを持っているかどうか疑問に思っていました。
データのサブセットへのリンクは次のとおりです: https://fil.email/VahwQq8p