-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathawsPrepareData.r
More file actions
executable file
·125 lines (66 loc) · 2.7 KB
/
awsPrepareData.r
File metadata and controls
executable file
·125 lines (66 loc) · 2.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
setwd("../machinelearning_R")
path<-paste(getwd(),"serverFunctions.r",sep="/")
invisible(source(path))
#recieve input facility name from command line
args = commandArgs(trailingOnly=TRUE)
#Rscript awsPrepareData.r facilityName
#default values
if (length(args)==0){
args <- "Brocolândia"
}
invisible(source("serverFunctions.r"))
mongo <- mongo.create(host="localhost:27017",username="netmap",password = "p4gic0tb9f2m2yj37iav")
if(mongo.is.connected(mongo) == TRUE) {
db <- "server_api_production"
facilities <- paste(db,"facilities",sep = ".")
#retrive list of facilities that match query and get 1st element which is the ID
facilityID<-mongo.find.all(mongo,facilities,list(name=args))[[1]][[1]]
zones <- paste(db,"zones",sep = ".")
#retrive all zones from that facility
listZones <- mongo.find.all(mongo,zones,list(facility_id=facilityID))
rawData <- NULL
#for each zone found
for (z in 1:length(listZones)){
#get ID of that zone from list of lists
zoneID <- listZones[[z]][[1]]
acquisition <- paste(db,"acquisitions",sep = ".")
listAcquisitions <- mongo.find.all(mongo,acquisition,list(zone_id=zoneID))
lista <- NULL
for (a in 1:length(listAcquisitions)){
listAP <- listAcquisitions[[a]]$access_points
acquiID <- listAcquisitions[[a]]$`_id`
#get relevant informantion from list
temp <- lapply(listAP,function(x) return (c(x$BSSID,x$RSSI)))
#reshape list and add relevant IDs
temp2<- lapply(temp,montaLista,zoneID=zoneID,acquiID=acquiID)
#create list in desirable format
#unlist lists
for (l in 1:length(temp2)){
lista <- rbind(lista,unlist(temp2[[l]]))
}
}
rawData <- rbind(rawData,lista)
}
#we DONT want strings to be turned to factors!
rawDataDF<-data.frame(rawData,stringsAsFactors = FALSE)
names(rawDataDF)<- c("BSSID","RSSI","idZ","acquiID")
rawDataDF$RSSI <- as.numeric(rawDataDF$RSSI)
molten <- melt(rawDataDF,id.vars=c("idZ","acquiID","BSSID"), value.name = "RSSI",measure.vars = c("RSSI"))
molten$variable <- NULL
#gambiarra
#molten <- molten[-14,]
attach(rawDataDF)
tidyData <- reshape2::dcast(molten, acquiID+ idZ ~ BSSID, value.var = 'RSSI')
detach(rawDataDF)
}else{
print("Could not connect to Mongo! DAMN IT LIRA")
}
#convert to numbers
#zones <- as.numeric(args)
#source("serverFunctions.r")
dataPath <- "prepared-data"
#remove Aquisition ID, as we don't really need it from now on
tidyData<- tidyData[,-1]
#transform idZ into factor!
tidyData[,1] <- as.factor(tidyData[,1])
saveRDS(tidyData,paste(dataPath,"/",args,".rds",sep=""))