来自空间点数据帧的子集随机点

问题描述 投票:0回答:1

我需要从我在ArcGIS中创建的网格中选择R中的随机点。我对此有些陌生,所以我对代码不熟悉。

我有一个大的SpatialPointsDataFrame,其中包含160831个名为“ gridpts”的元素(点)。我用“ readOGR”导入了点]

> names(gridpts)
[1] "gpts"   "L_code" "Lake"   "Area"

我想通过“ L_code”对点进行子集,然后选择随机点。这是我到目前为止所拥有的:

acr2.pts    <- gridpts[gridpts$L_code == "acr2",]
sample.acr2 <- sample(nrow(acr2.grid), 690)

但是,这给了我一个带有gpts的向量,而不是我想要的点子集。

谢谢。

r subset spatial arcgis
1个回答
0
投票

您好妮可,欢迎来到Stack Overflow。请花一些时间看看https://stackoverflow.com/help/how-to-ask以获得提示。这是提供一些数据,制作一个How to make a great R reproducible example并给出所需输出示例的好开始。

关于您的问题,我对您想要的输出进行假设。如果我的回答不能帮助您解决问题,则将其删除。

由于您未提供任何数据,所以我只使用mtcars数据集。此外,我使用tidyverse -package。

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包含子集后我的数据集样本的索引。因此

df %>%
  filter(cyl == 6) %>%                # subset again
  slice(idx_sample)                   # get the sampled data

为我们提供了采样子集。

© www.soinside.com 2019 - 2024. All rights reserved.