Подмножество стека растров по дате - PullRequest
0 голосов
/ 08 мая 2020

Я пытаюсь разбить ежемесячный растровый временной ряд в соответствии с заданным c периодом времени, в этом случае мне нужны только растры с октября года «n» до февраля года «n + 1» (означает октябрь, ноябрь, декабрь c, январь, февраль). Затем я проанализирую эти подмножества: например: в приведенном ниже случае я должен получить 3 подмножества (с октября по 01 февраля, с октября по февраль 02, с октября по февраль 03), которые необходимо сравнить.

Я использую приведенный ниже код, но это не работает. Я также получаю месяцы, которые не учитываются в моем анализе (с мая по сентябрь)

library(raster)
library(lubridate)

# create stack
r <- raster(ncol=10, nrow=10)
r <- stack(lapply(1:48, function(i) setValues(r, runif(100, -0, 1000))))

# add time dimension and names
date <- seq(as.Date('2000-01-01'),as.Date('2003-12-01'), 'months')
r <- setZ(r, date)
names(r)<-date
r

# time subsetting
sub <- subset(r, which(getZ(r) >= '2000-10-01' & (getZ(r) <= '2003-02-01')))
sub

, не могли бы вы помочь? спасибо я

1 Ответ

2 голосов
/ 13 мая 2020

Ваш текущий код подбирает все растры с 01.10.2003 по 01.02.2003. В зависимости от ваших потребностей вы можете подгруппировать каждый временной ряд с октября по февраль индивидуально:

sub1 <- subset(r, which(getZ(r) >= '2000-10-01' & (getZ(r) <= '2001-02-01')))
sub2 <- subset(r, which(getZ(r) >= '2001-10-01' & (getZ(r) <= '2002-02-01')))
sub3 <- subset(r, which(getZ(r) >= '2002-10-01' & (getZ(r) <= '2003-02-01')))

Или подгруппу с октября по февраль для всех лет:

require(stringr)
##subset all months that fall between Oct to Feb
sub <- subset(r, which(substr(getZ(r),6,7)%in%c(10,11,12,01,02)))
...