使用 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)