【发布时间】:2017-07-24 05:10:36
【问题描述】:
我正在处理一个包含动物跟踪数据的大型 SpatialPointsDataFrame。 SpatialPointsDataFrame 有 19 个动物 id,每个动物都有一系列 xy 坐标。对于每只动物,我将 xy 坐标分配给栅格网格,然后计算动物在每个网格正方形中花费的时间比例。
我采用了 SpatialPointsDataFrame 的一个子集(例如 1 只动物)并编写了一系列函数来实现这一目标。我现在想编写一个循环,它将对我的 SpatialPointsDataFrame 中的每个其他动物 id 执行完全相同的过程。
我的 SpatialPointsDataFrame(称为“spdf4points”)有两个数据属性:“date”(与我的问题无关)和“id”
table(spdf4points$id)
15K12 28 31A 34 46 72 73 73e 78 96 96b 99 99b C1 C17 M1 M16c M17a M7
这是我计算动物 15K12 在每个网格单元中花费的时间比例的代码:
#15K12 is the first animal id
r15K12<-raster(chla) #creating an empty raster for 15K12 based on the extent and resolution of a different raster layer
r15K12[] <- 0
table15K12<-table(cellFromXY(r15K12, subset(spdf4points, id=="15K12")))
tab15K12<-as.data.frame(table15K12)
tab15K12$Freq<-tab15K12$Freq/sum(tab15K12$Freq)
r15K12[as.numeric(names(table15K12))]<-table15K12
我如何编写一个循环来为其他所有动物重复此操作?
我想要的输出是每只动物的栅格和数据框。 所以,我想首先为每个动物 ID 创建空栅格。所以我想为每个动物 id 重复以下代码行。
r15K12<-raster(chla)
#r[animalID]
然后,我想为每个动物 id 重复下一段代码,以 1) 用该动物的数据填充栅格并 2) 为该动物创建数据框
table15K12<-table(cellFromXY(r15K12, subset(spdf4points, id=="15K12")))
tab15K12<-as.data.frame(table15K12)
tab15K12$Freq<-tab15K12$Freq/sum(tab15K12$Freq)
r15K12[as.numeric(names(table15K12))]<-table15K12
注意,这段代码将使用为该动物创建的空栅格,以及与该动物 ID 对应的 spdf4point 子集
【问题讨论】: