gpt4 book ai didi

R - 查找不同 id 值的质心

转载 作者:行者123 更新时间:2023-12-01 16:48:45 24 4
gpt4 key购买 nike

我正在尝试查找我创建的 SpatialPointsDataFrame 的质心。以下是名为“spdf”的数据框的片段。

    Name    X   Y
1 16 56 39
2 16 57 39
3 16 55 38
4 16 55 37
5 16 54 38
6 16 55 39
7 16 55 40
8 12 58 41
9 12 56 45
10 12 58 43
11 12 56 42
12 12 55 44
13 12 55 47

我使用“rgeos”包中的函数“gCentroid”来识别质心。我可以使用 gCentroid(spdf, byid = FALSE) 计算整个数据框的质心,但当我尝试使用 根据“名称”字段计算质心时,出现错误gCentroid(spdf, byid = TRUE, id = "名称").换句话说,根据上述数据,我想获得名称“12”和“16”的两个质心。关于“id”字段的 gCentroid 文档很少。有人对如何计算每个“名称”的质心有任何建议吗?

最佳答案

文档有点令人困惑,但您没有指定 ID 输入,而是指定输出。示例中的每个点都有自己的 ID(数据框的行名根据定义必须是唯一的)。但是,您可以轻松获得所需的输出,方法是用 df$Name 中的唯一值对数据框进行子集化,并以这种方式计算质心...

ctrs <- lapply( unique( df$Name ) , function(x) gCentroid( SpatialPoints( df[ df$Name == x , c('X','Y') ] ) ) )
setNames( ctrs , unique(df$Name ) )
#$`16`
#SpatialPoints:
# x y
#1 55.28571 38.57143
#Coordinate Reference System (CRS) arguments: NA

#$`12`
#SpatialPoints:
# x y
#1 56.33333 43.66667
#Coordinate Reference System (CRS) arguments: NA

附:我一直认为你应该能够通过拥有 SpatialCollections 对象来做到这一点,但似乎你无法指定相同类型的 Spatial 对象的列表(尽管文档对于该类来说)。

关于R - 查找不同 id 值的质心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23351743/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com