我有一份Landfire现有植被数据集(http://www.landfire.gov/),我已将其投影并裁剪到我的研究区域。这个栅格数据集有约12,000,000个单元格。每个单元格的数值代表特定的植被类型,数值范围从16:2200。但是在我的研究区域中,并不包含所有这些数值(例如,数值从20跳变到1087)。
为了简化数据(例如,将不同灌木丛合并为一类),我希望将栅格数据集的数值重置为更简单的值(1:11)。这将方便通过植被类型提取其他栅格数据集中的数据,并且易于绘制分类图。我已经编写了一份工作代码,但是需要大量输入来更改我需要修改的61个数值。下面是我的操作步骤:
为了简化数据(例如,将不同灌木丛合并为一类),我希望将栅格数据集的数值重置为更简单的值(1:11)。这将方便通过植被类型提取其他栅格数据集中的数据,并且易于绘制分类图。我已经编写了一份工作代码,但是需要大量输入来更改我需要修改的61个数值。下面是我的操作步骤:
#===============================
############Example#############
#===============================
library(raster)
r <- raster(nrows=30, ncols=10, xmn=0, xmx=10)
r[] <- rep(10:19, 30)
r.omance <- function(x){
x[x==10] <- 1; x[x==11] <- 1; x[x==12] <- 1
x[x==13] <- 1; x[x==14] <- 1; x[x==15] <- 1
x[x==16] <- 2; x[x==17] <- 2; x[x==18] <- 2
x[x==19] <- 2
return(x)}
reclass <- calc(r, fun = r.omance)
有没有更简单的方法来实现这个呢?想象一下要更改61个值时所需要输入的内容,特别是当x[x==16:20] <- 1会产生错误时,每个值都必须单独输入。就像我说的,我的代码是可以工作的。但我只是想成为更好的R语言编程人员。
谢谢。
x
是离散值。如果是连续变量的话,你的方法会更加有效。 - Paul Hiemstra?'%in%'
会为您获取文档(请注意引号)。 - Paul Hiemstra