遍历列中的类别并仅对这些记录执行插值
Loop through categories in a column and perform interpolation on only those records
我有一个带有采样位置的数据框。
我想 select 每个独特物种的数据,因此遍历所有独特的物种名称,并为每个物种创建一个插值层。然后用物种名称命名结果。插值部分工作正常......我只是不知道如何遍历每个物种名称并进行命名......
我在下面粘贴了工作代码,用于 select 一个物种名称并创建一个插值层。
SP_NAME sno swgt latdd londd
1 ILLEX ILLECEBROSUS 33.7542857 2.94582857 43.28667 -60.99367
2 CHLOROPHTHALMUS AGASSIZI 13.2971429 0.09205714 43.28667 -60.99367
3 ILLEX ILLECEBROSUS 0.9657143 0.16417143 43.94750 -58.72417
4 ZOARCES AMERICANUS 0.9657143 0.02897143 43.94750 -58.72417
5 AMBLYRAJA RADIATA 2.0457143 1.00240000 43.86483 -59.19717
6 MYOXOCEPHALUS OCTODECEMSPINOSUS 1.0228571 0.10228571 43.86483 -59.19717
setwd("C:/Michelle/Michelle/R/WCTS/Boundaries")
strata <- readOGR(".", "SurveyStrataWGS84")
strata<-spTransform(strata,CRS("+proj=utm +zone=20 ellps=WGS84"))
es_tows1 <- es_tows[which(es_tows$SP_NAME == "HIPPOGLOSSOIDES PLATESSOIDES"),]
ext = extent(strata)
rb <- raster(ext, ncol=554, nrow=279)
stratar <- rasterize(strata, rb)
plot(stratar)
idw.grid<- rasterToPoints(stratar, spatial=TRUE)
gridded(idw.grid) <- TRUE
proj4string(es_tows1) <- CRS("+proj=utm +zone=20 ellps=WGS84")
idw(log(es_tows1$swgt+ 0.00001) ~1 , es_tows1, idw.grid)
pal <- colorRampPalette(rev(brewer.pal(11, "Spectral")))(100)
spplot(idw.out, "var1.pred", col.regions=pal)
library(rgdal)
library(raster)
strata <- readOGR(".", "SurveyStrataWGS84")
strata <- spTransform(strata,CRS("+proj=utm +zone=20 ellps=WGS84"))
ext <- extent(strata)
rb <- raster(ext, ncol=554, nrow=279)
# I think this is all you need to do here
idw.grid <- as(rb, 'SpatialGrid')
# list of species
species <- unique(es_tows$SP_NAME)
for (sp in species) {
es_tows1 <- es_tows[es_tows$SP_NAME == sp, ]
out <- idw(log(es_tows1$swgt+ 0.00001) ~1 , es_tows1, idw.grid)
# ... save the results ....
writeRaster(raster(out), filename=sp)
}
我有一个带有采样位置的数据框。 我想 select 每个独特物种的数据,因此遍历所有独特的物种名称,并为每个物种创建一个插值层。然后用物种名称命名结果。插值部分工作正常......我只是不知道如何遍历每个物种名称并进行命名...... 我在下面粘贴了工作代码,用于 select 一个物种名称并创建一个插值层。
SP_NAME sno swgt latdd londd
1 ILLEX ILLECEBROSUS 33.7542857 2.94582857 43.28667 -60.99367
2 CHLOROPHTHALMUS AGASSIZI 13.2971429 0.09205714 43.28667 -60.99367
3 ILLEX ILLECEBROSUS 0.9657143 0.16417143 43.94750 -58.72417
4 ZOARCES AMERICANUS 0.9657143 0.02897143 43.94750 -58.72417
5 AMBLYRAJA RADIATA 2.0457143 1.00240000 43.86483 -59.19717
6 MYOXOCEPHALUS OCTODECEMSPINOSUS 1.0228571 0.10228571 43.86483 -59.19717
setwd("C:/Michelle/Michelle/R/WCTS/Boundaries")
strata <- readOGR(".", "SurveyStrataWGS84")
strata<-spTransform(strata,CRS("+proj=utm +zone=20 ellps=WGS84"))
es_tows1 <- es_tows[which(es_tows$SP_NAME == "HIPPOGLOSSOIDES PLATESSOIDES"),]
ext = extent(strata)
rb <- raster(ext, ncol=554, nrow=279)
stratar <- rasterize(strata, rb)
plot(stratar)
idw.grid<- rasterToPoints(stratar, spatial=TRUE)
gridded(idw.grid) <- TRUE
proj4string(es_tows1) <- CRS("+proj=utm +zone=20 ellps=WGS84")
idw(log(es_tows1$swgt+ 0.00001) ~1 , es_tows1, idw.grid)
pal <- colorRampPalette(rev(brewer.pal(11, "Spectral")))(100)
spplot(idw.out, "var1.pred", col.regions=pal)
library(rgdal)
library(raster)
strata <- readOGR(".", "SurveyStrataWGS84")
strata <- spTransform(strata,CRS("+proj=utm +zone=20 ellps=WGS84"))
ext <- extent(strata)
rb <- raster(ext, ncol=554, nrow=279)
# I think this is all you need to do here
idw.grid <- as(rb, 'SpatialGrid')
# list of species
species <- unique(es_tows$SP_NAME)
for (sp in species) {
es_tows1 <- es_tows[es_tows$SP_NAME == sp, ]
out <- idw(log(es_tows1$swgt+ 0.00001) ~1 , es_tows1, idw.grid)
# ... save the results ....
writeRaster(raster(out), filename=sp)
}