在 R 中查找区域年度最大值
Finding regional annual maximum values in R
我正在处理年度最大降水量的全球网格化数据。但是,我想通过使用掩码来隔离我 145 年中每一年的土地面积 "only" 的最大值(因此基于所有土地面积的 145 个最大值)。也就是说,当我应用掩码时,我只收到 NA 值,我不明白为什么(当不应用掩码时,下面的过程工作正常)。这是我到目前为止所做的:
Model66 <- brick("MaxPrecNOAA-GFDLGFDL-ESM2Ghistorical.nc", var="onedaymax")
#Applying the mask to isolate land areas only:
data("wrld_simpl")
b <- wrld_simpl
land <- mask(Model66,b)
#To derive highest maximum value for each layer/year for land only (145 years = 145 maximum values)
Gmax <- sapply(unstack(land), function(r){max(values(r))})
Gmax
[1] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
NA NA NA NA NA NA NA
[40] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
NA NA NA NA NA NA NA
[79] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
NA NA NA NA NA NA NA
[118] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
为什么会这样?我只隔离了土地,我的地块正确地显示了掩码有效,因为只有土地在每个 layer/year 的地块上都有值(这个想法是每个 layer/year 在这些地块中取最高值,正如我试图对对象 "Gmax" 所做的那样)。同样,当不应用遮罩时,NAs 不会出现,所以我想知道是否只是使用遮罩时的一个小细节导致的?
如有任何帮助,我们将不胜感激!
谢谢!
试试:
Gmax <- sapply(unstack(land), function(r){max(values(r), na.rm=T)})
R 将您的 NA 视为最大值(正无穷大),您可以使用 na.rm=TRUE
禁用该选项
我正在处理年度最大降水量的全球网格化数据。但是,我想通过使用掩码来隔离我 145 年中每一年的土地面积 "only" 的最大值(因此基于所有土地面积的 145 个最大值)。也就是说,当我应用掩码时,我只收到 NA 值,我不明白为什么(当不应用掩码时,下面的过程工作正常)。这是我到目前为止所做的:
Model66 <- brick("MaxPrecNOAA-GFDLGFDL-ESM2Ghistorical.nc", var="onedaymax")
#Applying the mask to isolate land areas only:
data("wrld_simpl")
b <- wrld_simpl
land <- mask(Model66,b)
#To derive highest maximum value for each layer/year for land only (145 years = 145 maximum values)
Gmax <- sapply(unstack(land), function(r){max(values(r))})
Gmax
[1] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
NA NA NA NA NA NA NA
[40] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
NA NA NA NA NA NA NA
[79] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
NA NA NA NA NA NA NA
[118] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
为什么会这样?我只隔离了土地,我的地块正确地显示了掩码有效,因为只有土地在每个 layer/year 的地块上都有值(这个想法是每个 layer/year 在这些地块中取最高值,正如我试图对对象 "Gmax" 所做的那样)。同样,当不应用遮罩时,NAs 不会出现,所以我想知道是否只是使用遮罩时的一个小细节导致的?
如有任何帮助,我们将不胜感激!
谢谢!
试试:
Gmax <- sapply(unstack(land), function(r){max(values(r), na.rm=T)})
R 将您的 NA 视为最大值(正无穷大),您可以使用 na.rm=TRUE