按日期排列的 R 栅格堆栈子集
R Raster stack subset by date
我正在尝试根据特定时间段对每月栅格时间序列进行子集化,在这种情况下,我只想要从一年中的十月 'n' 到一年中的二月的栅格 'n+1'(表示十月、十一月、十二月、一月、二月)。
然后我将分析这些子集:例如:在下面的情况下,我应该得到需要比较的 3 个子集(Oct00 到 Feb01、Oct01 到 Feb02、Oct02 到 Feb03)。
我是运行下面的代码,但它不起作用。我还得到了在我的分析中没有考虑的月份(5 月到 9 月)
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
你能帮忙吗?
谢谢
我
您当前的代码子集从 2000-10-01 到 2003-02-01 的所有栅格。根据您的需要,您可以分别对每个 10 月到 2 月的时间序列进行子集化:
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')))
或所有年份的 Oct 到 Feb 的子集:
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)))
我正在尝试根据特定时间段对每月栅格时间序列进行子集化,在这种情况下,我只想要从一年中的十月 'n' 到一年中的二月的栅格 'n+1'(表示十月、十一月、十二月、一月、二月)。 然后我将分析这些子集:例如:在下面的情况下,我应该得到需要比较的 3 个子集(Oct00 到 Feb01、Oct01 到 Feb02、Oct02 到 Feb03)。
我是运行下面的代码,但它不起作用。我还得到了在我的分析中没有考虑的月份(5 月到 9 月)
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
你能帮忙吗? 谢谢 我
您当前的代码子集从 2000-10-01 到 2003-02-01 的所有栅格。根据您的需要,您可以分别对每个 10 月到 2 月的时间序列进行子集化:
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')))
或所有年份的 Oct 到 Feb 的子集:
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)))