0

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

4

0 に答える 0