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.
Aucun commentaire:
Enregistrer un commentaire