使用 x y z 创建 for 循环,df 到 ascii
Creating for loop, df to ascii with x y z
我有一个数据框:
总共超过300万行和1800种(学名)
下面的代码创建了一个 0.5 度比例的空栅格..
library(raster)
ext <- extent(-180.0, 180, -90.0, 90.0)
gridsize <- 0.5
tempraster<- raster(ext, res=gridsize)
crs(tempraster) <- "+proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0"`
#然后下面的代码一次用一个物种的 x y 数据填充该栅格,根据科学名称创建一个 ascii,1 代表物种,0 代表物种。
selection<-animals
spp <- unique(animals$scientific_name)
result <- list()
for (i in 1:length(spp)) {
spi <- selection[selection$scientific_name == spp[i], c("lon", "lat")]
fname <- paste0(spp[i], ".asc")
result[[i]] <- rasterize(spi, tempraster, fun="count", filename=fname, background = 0, overwrite = TRUE)}
我想调整此代码,以便它使用总计列中的值,而不是生成的 ascii 在物种所在的位置具有 1。不幸的是,我是 for 循环和其他函数的初学者,所以我寻求任何帮助。
rasterize()
函数有 field
个参数,所以你可以这样调用它:
result[[i]] <- rasterize(spi, tempraster,
field=selection[selection$scientific_name == spp[i], "total"],
fun=sum,
filename=fname, background = 0,
overwrite = TRUE)
我有一个数据框:
总共超过300万行和1800种(学名)
下面的代码创建了一个 0.5 度比例的空栅格..
library(raster)
ext <- extent(-180.0, 180, -90.0, 90.0)
gridsize <- 0.5
tempraster<- raster(ext, res=gridsize)
crs(tempraster) <- "+proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0"`
#然后下面的代码一次用一个物种的 x y 数据填充该栅格,根据科学名称创建一个 ascii,1 代表物种,0 代表物种。
selection<-animals
spp <- unique(animals$scientific_name)
result <- list()
for (i in 1:length(spp)) {
spi <- selection[selection$scientific_name == spp[i], c("lon", "lat")]
fname <- paste0(spp[i], ".asc")
result[[i]] <- rasterize(spi, tempraster, fun="count", filename=fname, background = 0, overwrite = TRUE)}
我想调整此代码,以便它使用总计列中的值,而不是生成的 ascii 在物种所在的位置具有 1。不幸的是,我是 for 循环和其他函数的初学者,所以我寻求任何帮助。
rasterize()
函数有 field
个参数,所以你可以这样调用它:
result[[i]] <- rasterize(spi, tempraster,
field=selection[selection$scientific_name == spp[i], "total"],
fun=sum,
filename=fname, background = 0,
overwrite = TRUE)