[英]How to create polygon according to treeID from spatial points data frame?
[英]Subset random points from spatial points data frame
我需要从我在 ArcGIS 中创建的网格中的 R 中的 select 随机点。 我对此有点陌生,所以我不熟悉代码。
我有一个包含 160831 个元素(点)的大型 SpatialPointsDataFrame,名为“gridpts”。 我用“readOGR”导入了点
> names(gridpts)
[1] "gpts" "L_code" "Lake" "Area"
我想通过“L_code”对点进行子集化,然后是 select 随机点。 这是我到目前为止所拥有的:
acr2.pts <- gridpts[gridpts$L_code == "acr2",]
sample.acr2 <- sample(nrow(acr2.grid), 690)
但是,这给了我一个带有 gpts 的向量,而不是我想要的点的子集。
谢谢你。
嗨,妮可,欢迎来到 Stack Overflow。 请花点时间查看https://stackoverflow.com/help/how-to-ask以获取提示。 提供一些数据是一个好的开始,制作如何制作出色的 R 可重现示例并给出您想要的 output 的示例。
关于您的问题,我假设您想要的 output。 如果我的回答不能帮助您解决问题,我会删除它。
由于您没有提供任何数据,我只使用mtcars
数据集。 此外,我使用tidyverse
。
library(tidyverse)
df <- mtcars
n <- 3 # sample size; in your case 690
首先,我想在给定条件下对数据集进行子集化,并从这些子集中提取大小为n
的样本:
idx_sample <- df %>%
filter(cyl == 6) %>% # in your case: L_code == "acr2"
count() %>% # count the datasets after subsetting; 7 in my case
unlist %>% # convert the tibble in to a vector
seq(1,.) %>% # create a sequence, equal to 1:7 in my case
sample(., n) # get some (2 in my case) random indices
idx_sample
包含子集后我的数据集样本的 indizes。 所以
df %>%
filter(cyl == 6) %>% # subset again
slice(idx_sample) # get the sampled data
给我们采样的子集。
正如马丁已经提到的那样,如果没有一个有效的例子来帮助你并不容易。 但是我想我理解你想要做什么,因为我从类似的问题开始:
Spatialpointsdataframes 像常规数据帧一样工作,您可以子集或 select 带有方括号的行和列,例如 [1:3,c(2,4,5)] 用于列 2,4,5 的行 1:3
在您已经将您的 spdf 正确子集到所需的子组之后:
acr2.pts <- gridpts[gridpts$L_code == "acr2",]
您需要再次使用随机样本进行子集化:
sample.acr2 <- sample(nrow(acr2.pts), 690) (您想从原始行数还是从 acr2 子集中的行数中进行子集化?)
这个向量现在包含随机行号,所以你可以从子集中 select :
random_sub <- acr2.pts[sample.acr2,]
从理论上讲,您也可以将样本 function 放在那里,但这可能看起来很混乱:
random_sub <- acr2.pts [样本(nrow(acr2.pts),690),]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.