我有SpatialPointsDataFrame形式的动物追踪数据。除xy坐标外,此数据框包含2个变量“animalID”和“date”(格式为“yyyy-mm-dd hh:mm:ss”)。对于每只动物,有数百个点,每只动物的总点数不相等。
我想创建栅格,其中每个网格单元格包含“在单元格中花费的时间比例”的值。这将针对每个animalID计算,并且等于“该单元格中的点数除以该动物的总点数”
我知道如何将点分配给栅格网格(下面的代码)。但我不知道如何为每个animalID为网格分配点数。完成此操作后,我(对于每个animalID)需要将每个单元格的值除以该animalID的总点数。我怎么能这样做?
r<-raster(temp) #create a blank raster with the same extent as my temperature raster
r[] <- 0
r
#populate this new raster with the animal location data
tablepoints <- table(cellFromXY(temp, animallocations))
tab<-as.data.frame(tablepoints)
r[as.numeric(names(tablepoints))] <- tablepoints
r
以下是示例栅格和SpatialPointsDataFrame。
library(raster)
library(sp)
library(rgdal)
r <- raster(xmn=0, ymn=0, xmx=10, ymx=10, res=1)
r[] <- 0
id<-as.data.frame(c(rep("bird1",80), rep("bird2",50), rep("bird3",70)))
colnames(id)[1]<-"animalID"
xy<-spsample(as(extent(r), 'SpatialPolygons'), 200, 'random')
data<-SpatialPointsDataFrame(xy, id)
理想情况下,我想要一个光栅,每个单元格有三个变量:bird1的比例,bird2的比例和bird3的比例