samedi 2 février 2019

how to sample a file one by one without replacement in R

I am working on Monte Carlo Sampling for which I need sampling to be done one by one from a list of files in a folder. I don't want to add any duplicate file. So each file's name is used as the column name. So I want to avoid having two columns with the same name. How can I do so? I have to 100 subsamples so I cant sample each one separately. My code is as follows.

library(dplyr)
library(lubridate)
library(hms)
library(chron)
library(stringr)
library(raster)
library(rgdal)
library(readr)
library(sp)
library(SearchTrees)
library(rgeos)
library(mapdata)
library(geosphere)  
library(maptools)
library(sf)
library(data.table)



shapefile_roads<- readOGR("Road.shp", layer = "Road")
shapefile_roads <- spTransform(shapefile_roads, CRS("+proj=utm +zone=43 ellps=WGS84"))
q<-st_as_sf( shapefile_roads)
addre<-data.frame(q$Row_Rd_No)  
names(addre)<-c("Road_ID")
addre<-data.table(addre)
setkey(addre, Road_ID)
loop_N<-addre
loop_N$num_obs<-0
loop_N$Magic_num<-0
setkey(loop_N, Road_ID)
big_data_N= data.frame()
big_data_N= data.frame()
dir<-"Path"
fi <- list.files(dir, pattern="\\.shp$") 

while(y1>=0){
  sample1 <- sample(fi, 1,replace = FALSE) # i want each time sampling to with out replacement
  my_spdf<-readOGR(sample1)
  my_spdf <- spTransform(my_spdf, CRS("+proj=utm +zone=43 ellps=WGS84"))
  r<-st_as_sf( my_spdf) 
  na<-sample1
  d<-substr(na, 1, 18)
  w<- str_replace_all(d,"_","-") 
  addr<-data.frame(r$Row_Rd_No,r$Mean_BC) 
  names(addr)<-c("Road_ID",w)
  loop_N<-data.table(loop_N)
  addr<-data.table(addr)
  setkey(addr, Road_ID)
  setkey(loop_N, Road_ID)
  loop_N<-addr[loop_N]
  loop_N[, num_obs := Reduce(`+`, lapply(.SD,function(x) !is.na(x)))]
  loop_N$num_obs<-as.numeric(loop_N$num_obs)
  loop_N$Magic_num<-loop_N$num_obs-3
  newdata_N <- subset(loop_N, Magic_num == 4)  
  loop_N<- subset(loop_N, Magic_num != 4)
  newdata_N<-data.table(newdata_N)
  setkey(newdata_N, Road_ID)
  y1=nrow(loop_N)
  y1<-as.numeric(y1)
  big_data_N <- rbind(big_data_N,newdata_N, fill=TRUE)  
}

Column names repeated or the same file is sampled: My Output.

Expected Output To be like




Aucun commentaire:

Enregistrer un commentaire