Любой способ исключить определенные периоды погодных данных из многослойной растровой сетки в R? - PullRequest
0 голосов
/ 04 июля 2018

У меня есть данные с суточной средней температурой за 16 лет в формате netCDF, размер файла довольно большой (около 3 ГБ). Изначально я использовал пакет raster для загрузки исходных данных с сеткой в ​​объект * RasterStack.

Мне интересно, как я могу исключить данные о погоде, когда их временные диапазоны не соответствуют моим интересам. В частности, я хочу использовать данные о погоде только за 5 лет, а здесь у меня есть данные о погоде за 15 лет. Как я могу использовать эту фильтрацию для многослойных растровых данных в R? Например, промежуток времени моих исходных данных в сетке варьируется от 1980.1.1 до 1995.12.31, и я хочу сохранить только температурные данные с 1980.1.1 до 1984.12.31. Как я могу отфильтровать желаемую сетку температур из многослойного растра в R? Любая возможная идея, чтобы это произошло?

Воспроизводимый пример :

r <- raster(xmn=5.75, xmx= 15, ymn = 47.25, ymx =55,res=c(0.25,0.25))
tempDat<- do.call(stack,lapply(1:5844,function(i) setValues(r,round(runif(n = ncell(r),min = -4,max = 23)))))
names(tempDat) <- paste0('X',gsub('-','.',ymd('1980.01.01') + days(1:5844)))

Обновление

Если есть другие удобные инструменты, которые могут легко разбить файл на 1017 *, я хотел бы знать, как это сделать. Любой самый быстрый способ отфильтровать мои среднесуточные значения температуры из многослойной растровой сетки будет работать для меня. Спасибо

желаемый вывод :

Я хочу сохранить только среднесуточные данные о температуре с 1980.1.1 по 1984.12.31; как я могу это сделать? как я могу управлять этой фильтрацией на многослойной растровой сетке в R? Есть еще мысли? Спасибо

1 Ответ

0 голосов
/ 05 июля 2018

Я придумываю свой способ ответить на этот вопрос:

Итак, я использовал raster::getZ(), чтобы перечислить всю дату, и grep, чтобы установить период времени, который меня интересует. Вот решение:

library(raster)
library(ncdf4)

(tg <- brick("C:\\tn_0.25deg_reg_2018.nc"))
tg_date <- getZ(tg)  
grep("2018-01-01", tg_date)
grep("2018-05-31", tg_date)

подмножество

tg_5months <- subset(tg, 1:150)
tg_5months @z$Date <- tg@z$Date[1:150] 

и это сделано красиво.

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