Нахождение региональных годовых максимальных значений в R - PullRequest
0 голосов
/ 09 марта 2020

Я работаю с глобально привязанными данными о годовом максимальном количестве осадков. Тем не менее, я хочу выделить эти максимальные значения для земельных участков «только» для каждого из моих 145 лет, используя маску (поэтому 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

Почему это происходит? Я выделил только землю, и мои графики правильно показывают, что маска работала, так как только участки земли имеют значения на графиках для каждого слоя / года (и идея заключалась в том, чтобы получить наибольшее значение среди них для каждого слоя / года, как я пытался делать с объектом "Gmax"). Опять же, когда маска не применяется, NA не отображаются, поэтому мне интересно, если это просто небольшая деталь, вызывающая это при использовании маски?

Любая помощь с этим будет принята с благодарностью!

Спасибо!

1 Ответ

1 голос
/ 09 марта 2020

Попробуйте с помощью:

Gmax <- sapply(unstack(land), function(r){max(values(r), na.rm=T)}) 

Ваши NA рассматриваются как R как максимальное значение (положительная бесконечность), вы можете отключить эту опцию с помощью na.rm=TRUE

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...