2014-01-31 3 views
1

Я работаю над запуском RandomForest. Я импортировал данные точки, представляющие используемые и неиспользуемые сайты, и создал растровый стек из растровых ГИС-слоев. Я создал SpatialPointDataFrame со всеми используемыми и неиспользованными точками с привязанными к ним значениями растра.Как подзапрос SpatialPointsDataFrame в R

require(sp) 
require(rgdal) 
require(raster) 

#my raster stack 
xvariables <- stack(rlist) #rlist = a list of raster layers 

# Reading in the spatial used and unused points. 
ldata <- readOGR(dsn=paste(path, "DATA", sep="/"), layer=used_avail) 
str([email protected]) 


#Attach raster values to point data. 
v <- as.data.frame(extract(xvariables, ldata)) 
[email protected] = data.frame([email protected], v[match(rownames([email protected]), rownames(v)),]) 

Далее Я планирую запустить случайный лес, используя эти данные. Проблема в том, что у меня очень большой набор данных (более 40 000 точек данных). Мне нужно подставить образцы моих данных, но мне очень сложно понять, как это сделать. Я пробовал использовать функцию sample(), но я думаю, что, поскольку у меня есть SpatialPointsDataFram, он не будет работать? Я новичок в R и буду очень благодарен за любые идеи.

Спасибо!

ответ

2

Подмножество пространственного объекта * DataFrame довольно просто; просто использовать

spSubset <- spObject[<sample_criterion>,] 

Вот пример, где мы загружаем все колледжи в Нью-Джерси, а затем захватить случайную выборку размером = 20. Также есть пример, где мы загружаем все штаты США и захватываем только «Нью-Джерси».

library(rgdal) 
set.seed(1) 
# random sample of NJ colleges... 
sampleSize=20 
spPoints <- readOGR(dsn=".",layer="NJ_College_Univ_NAD83njsp") 
spSample <- spPoints[sample(1:length(spPoints),sampleSize),] 

# extract NJ from US States TIGER/Line file 
states <- readOGR(dsn=".",layer="tl_2013_us_state") 
NJ  <- states[states$NAME=="New Jersey",] 
NJ  <- spTransform(NJ,CRS=CRS(proj4string(spSample))) 

# render the map 
NJ.df <- fortify(NJ) 
library(ggplot2) 
ggplot() + 
    geom_path(data=NJ.df, aes(x=long,y=lat, group=group))+ 
    geom_point(data=as.data.frame(coordinates(spPoints)), 
      aes(x=coords.x1,y=coords.x2),colour="blue", size=3)+ 
    geom_point(data=as.data.frame(coordinates(spSample)), 
      aes(x=coords.x1,y=coords.x2),colour="red", size=3)+ 
    coord_fixed() + labs(x="", y="") + theme(axis.text=element_blank()) 

TIGER/Line файл штатов США можно найти here. Форма шейха колледжа NJ: here.

+0

Работа с комментариями вряд ли будет продуктивной. Чтобы воспроизвести вашу проблему, мне понадобится файл 'rlist' и' DATA'. Принимая во внимание, что «шейп-файл» на самом деле представляет собой набор файлов (так, DATA.dbf, DATA.prj, DATA.shp и т. Д.), Можете ли вы загрузить их где-нибудь и предоставить ссылку? – jlhoward