基于月份的具有不同值的光栅块的乘积层

时间:2019-11-25 20:36:12

标签: r netcdf noaa

我从NOAA(CPC统一标准)下载了netcdf格式的每月降水数据。数据以mm / day的形式存储,我需要将每个图层乘以各自月份的计数,以得出该月份的总降水量。例如,1969年9月的图层将乘以30,而2月的图层将乘以28。而且,leap年的问题是必须将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

0 个答案:

没有答案