首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >空间点数据帧中随机点的子集

空间点数据帧中随机点的子集
EN

Stack Overflow用户
提问于 2020-05-19 09:08:34
回答 2查看 316关注 0票数 0

我需要从我在ArcGIS中创建的网格中选择R中的随机点。我是个新手,所以我对代码不太熟悉。

我有一个包含160831个元素(点)的大型SpatialPointsDataFrame,名为"gridpts“。我用"readOGR“导入了这些点

代码语言:javascript
复制
> names(gridpts)
[1] "gpts"   "L_code" "Lake"   "Area"

我想通过"L_code“来设置这些点的子集,然后选择随机的点。这就是我到目前为止所知道的:

代码语言:javascript
复制
acr2.pts    <- gridpts[gridpts$L_code == "acr2",]
sample.acr2 <- sample(nrow(acr2.grid), 690)

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

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2020-05-20 02:00:39

你好,Nicole,欢迎来到Stack Overflow。请花点时间看看https://stackoverflow.com/help/how-to-ask中的提示。这是一个很好的开始,给出一些数据,做一个How to make a great R reproducible example,并给出一个你想要的输出的例子。

关于你的问题,我对你的期望输出做了一个假设。如果我的回答不能帮助你解决你的问题,我会删除它。

因为您没有提供任何数据,所以我只使用mtcars数据集。此外,我使用tidyverse-package。

代码语言:javascript
复制
library(tidyverse)
df <- mtcars

n <- 3 # sample size; in your case 690

首先,我想在给定的条件下设置数据集的子集,并从这些子集中提取一个大小为n的样本:

代码语言:javascript
复制
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包含子集设置后我的数据集样本的原始数据。因此

代码语言:javascript
复制
df %>%
  filter(cyl == 6) %>%                # subset again
  slice(idx_sample)                   # get the sampled data

给我们提供了采样的子集。

票数 0
EN

Stack Overflow用户

发布于 2020-05-26 22:34:56

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

空间点数据帧的工作方式与常规数据帧类似,您可以使用方括号对行和列进行子集或选择,例如1:3,c( 2,4,5 )表示列2,4,5的行1:3

在您已经正确地将spdf子集设置为所需的子组后:

acr2.pts <- gridptsgridpts$L_code == "acr2",

你需要用你的随机样本再次子集:

sample.acr2 <- sample(nrow(acr2.pts),690) (您想从原始行数还是从acr2子集的行数中获取子集?)

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

random_sub <- acr2.ptssample.acr2,

从理论上讲,您也可以将示例函数放在其中,但这看起来可能会很混乱:

random_sub <- acr2.ptssample(nrow(acr2.pts),690),

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61881590

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档