【问题标题】:Subset random points from spatial points data frame来自空间点数据帧的子集随机点
【发布时间】:2020-09-04 23:01:57
【问题描述】:

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

我有一个包含 160831 个元素(点)的大型 SpatialPointsDataFrame,名为“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。也许在文本(和标题)中提及它是有意义的。使用标签“R”也可能会有所帮助。

标签: r subset spatial arcgis


【解决方案1】:

嗨,妮可,欢迎来到 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

给我们采样的子集。

【讨论】:

    【解决方案2】:

    正如 Martin 已经提到的,如果没有一个有效的例子来帮助你是不容易的。但是我想我理解你想要做什么,因为我从类似的问题开始:

    Spatialpointsdataframes 像常规数据框一样工作,您可以子集或选择带有方括号的行和列,例如[1:3,c(2,4,5)] 用于列 2,4,5 的第 1:3 行

    在您已经将 spdf 正确子集到所需的子组之后:

    acr2.pts

    您需要再次使用随机样本进行子集化:

    sample.acr2

    此向量现在包含随机行号,因此您可以从子集中进行选择:

    random_sub

    理论上您也可以将示例函数放在那里,但这可能看起来很混乱:

    random_sub

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-18
      • 1970-01-01
      • 2022-05-21
      • 2016-10-31
      • 1970-01-01
      • 1970-01-01
      • 2016-10-18
      • 1970-01-01
      相关资源
      最近更新 更多