[英]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.