将 sf 转换为标记的 ppp
Convert sf to marked ppp
我使用以下代码成功地将 sf 对象转换为 ppp:
sf_owin = maptools::as.ppp.SpatialPointsDataFrame(as_Spatial(sf_points__flat))
sf_points__flat 看起来像这样:
Simple feature collection with 131 features and 3 fields
geometry type: MULTIPOINT
dimension: XY
bbox: xmin: -1932934 ymin: 4958872 xmax: -1439558 ymax: 5861173
projected CRS: NAD83(2011) / UTM zone 16N
# A tibble: 131 x 4
# Groups: COOPID [131]
COOPID STATION_NA geometry Annual_Precipitation
* <dbl> <chr> <MULTIPOINT [m]> <dbl>
1 0 Ontario ((-1899685 5335073)) 9.24
2 100010 ABERDEEN EXPERIMNT STN ((-1610453 5091311)) 12.4
3 100227 AMERICAN FALLS 3 NW ((-1623401 5075011)) 20.4
4 100282 ANDERSON DAM ((-1807106 5212322)) 16.3
5 100347 ARBON 2 NW ((-1606302 5034484)) 10.2
6 100375 ARCO ((-1622855 5179969)) 19.5
7 100448 ARROWROCK DAM ((-1834338 5254236)) 20.1
8 100470 ASHTON ((-1458491 5179214)) 37.5
9 100528 AVERY RS #2 ((-1678382 5654084)) 25.3
10 100667 BAYVIEW MODEL BASIN ((-1691954 5753129)) 9.69
# ... with 121 more rows
sf_owin 看起来像这样:
Marked planar point pattern: 131 points
Mark variables: COOPID, STATION_NA, Annual_Precipitation
window: rectangle = [-1932934.3, -1439558.2] x [4958872, 5861173] units
现在当我尝试创建 ppp 标记类型时出现错误
Stations_ppp_types = split(sf__owin, which.marks = "Type")
Error in split.ppp(sf__owin, which.marks = "Type") :
Data frame of marks contains no factors
如何通过将 sf 对象转换为 ppp
来按标记 (STATION_NA) 拆分 ppp
这个问题是关于 spatstat
包的。
错误消息表明 split
命令被发送到 split.ppp
,因此您可以查找 split.ppp
的帮助来找出问题所在。
帮助文件会告诉您参数 which.marks
被 split.ppp
忽略了。所以你可以删除那个参数。
要拆分点模式,您需要一个 factor
(指定分组的分类值向量)。点模式中的标记不是因素。 (这就是错误消息的意思。)根据您的打印输出,列 STATION_NA
是字符值。如果要根据这些值拆分模式,则需要将它们转换为因子值。例如
f <- marks(sf_owin)$"STATION_NA"
f <- factor(f)
Y <- split(sf_owin, f)
或者你可以先修复点阵中的标记,这样split.ppp
就可以自动工作了:
marks(sf_owin)$"STATION_NA" <- factor(marks(sf_owin)$"STATION_NA")
Y <- split(sf_owin)
我使用以下代码成功地将 sf 对象转换为 ppp:
sf_owin = maptools::as.ppp.SpatialPointsDataFrame(as_Spatial(sf_points__flat))
sf_points__flat 看起来像这样:
Simple feature collection with 131 features and 3 fields
geometry type: MULTIPOINT
dimension: XY
bbox: xmin: -1932934 ymin: 4958872 xmax: -1439558 ymax: 5861173
projected CRS: NAD83(2011) / UTM zone 16N
# A tibble: 131 x 4
# Groups: COOPID [131]
COOPID STATION_NA geometry Annual_Precipitation
* <dbl> <chr> <MULTIPOINT [m]> <dbl>
1 0 Ontario ((-1899685 5335073)) 9.24
2 100010 ABERDEEN EXPERIMNT STN ((-1610453 5091311)) 12.4
3 100227 AMERICAN FALLS 3 NW ((-1623401 5075011)) 20.4
4 100282 ANDERSON DAM ((-1807106 5212322)) 16.3
5 100347 ARBON 2 NW ((-1606302 5034484)) 10.2
6 100375 ARCO ((-1622855 5179969)) 19.5
7 100448 ARROWROCK DAM ((-1834338 5254236)) 20.1
8 100470 ASHTON ((-1458491 5179214)) 37.5
9 100528 AVERY RS #2 ((-1678382 5654084)) 25.3
10 100667 BAYVIEW MODEL BASIN ((-1691954 5753129)) 9.69
# ... with 121 more rows
sf_owin 看起来像这样:
Marked planar point pattern: 131 points
Mark variables: COOPID, STATION_NA, Annual_Precipitation
window: rectangle = [-1932934.3, -1439558.2] x [4958872, 5861173] units
现在当我尝试创建 ppp 标记类型时出现错误
Stations_ppp_types = split(sf__owin, which.marks = "Type")
Error in split.ppp(sf__owin, which.marks = "Type") :
Data frame of marks contains no factors
如何通过将 sf 对象转换为 ppp
来按标记 (STATION_NA) 拆分 ppp这个问题是关于 spatstat
包的。
错误消息表明 split
命令被发送到 split.ppp
,因此您可以查找 split.ppp
的帮助来找出问题所在。
帮助文件会告诉您参数 which.marks
被 split.ppp
忽略了。所以你可以删除那个参数。
要拆分点模式,您需要一个 factor
(指定分组的分类值向量)。点模式中的标记不是因素。 (这就是错误消息的意思。)根据您的打印输出,列 STATION_NA
是字符值。如果要根据这些值拆分模式,则需要将它们转换为因子值。例如
f <- marks(sf_owin)$"STATION_NA"
f <- factor(f)
Y <- split(sf_owin, f)
或者你可以先修复点阵中的标记,这样split.ppp
就可以自动工作了:
marks(sf_owin)$"STATION_NA" <- factor(marks(sf_owin)$"STATION_NA")
Y <- split(sf_owin)