我需要从我在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的向量,而不是我想要的点子集。
谢谢。
您好妮可,欢迎来到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
为我们提供了采样子集。