Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #UCITAVANJE i RACUNICA
- list.filenames <- dir(pattern='*gaze.csv$', recursive = T)
- ispitanik <- list()
- xc <- list()
- yc <- list()
- centar_x <- 0
- centar_y <- 0
- dc_x <- 0
- dc_y <- 0
- xc_new <- list()
- yc_new <- list()
- xc_clean <- list()
- yc_clean <- list()
- for (i in 1:length(list.filenames)) {
- #ucitavanje
- ispitanik[[i]] <- read.csv2(list.filenames[i], header = FALSE)
- ispitanik[[i]][[4]] <- 0
- #dodeljuje pocetne vrednosti
- pom_niz <- vector(mode = "numeric")
- k <- 0
- max_klaster <- 0
- j<-1
- #rasporedjuje gejzove po klasterima
- while ("0" %in% ispitanik[[i]][[4]]) {
- if (ispitanik[[i]][[4]][[j]] == 0) {
- max_klaster <- max_klaster + 1
- ispitanik[[i]][[4]][[j]] <- max_klaster
- if (j< length(ispitanik[[i]][[4]])) {
- for (k in (j+1):length(ispitanik[[i]][[4]])) {
- if (ispitanik[[i]][[4]][[k]] == 0) {
- d <- sqrt((ispitanik[[i]][[2]][[j]]-ispitanik[[i]][[2]][[k]])^2+
- (ispitanik[[i]][[3]][[j]]-ispitanik[[i]][[3]][[k]])^2)
- if (d < 38) { #OVDE MENJAJ UDALJENOST GEJZOVA ZA PRIPADNOST KLASTERU
- ispitanik[[i]][[4]][[k]] <- max_klaster
- pom_niz <- append(pom_niz, k, after = length(pom_niz))
- }
- }
- }
- }
- while (length(pom_niz) > 0) {
- prvi_u_pom_nizu <- pom_niz[1]
- for (p in (j+1):length(ispitanik[[i]][[4]])) {
- if (ispitanik[[i]][[4]][[p]] == 0) {
- d <- sqrt((ispitanik[[i]][[2]][[prvi_u_pom_nizu]] - ispitanik[[i]][[2]][[p]])^2+
- (ispitanik[[i]][[3]][[prvi_u_pom_nizu]] - ispitanik[[i]][[3]][[p]])^2)
- if (d < 38) {
- ispitanik[[i]][[4]][[p]] <- max_klaster
- pom_niz <- append(pom_niz, p, after = length(pom_niz))
- }
- }
- }
- pom_niz <- pom_niz[-1]
- }
- }
- j<-j+1
- }
- a <- table(ispitanik[[i]][[4]])
- a <- data.frame(a)
- #dodeljuje 111 neklasterima
- for (q in 1:nrow(a)){
- if (a[q,2] < 4) {
- ispitanik[[i]][[4]][ispitanik[[i]][[4]] == a[q,1]] <- 111
- }
- }
- xc[[i]] <- aggregate(ispitanik[[i]][[2]], list(ispitanik[[i]][[4]]),mean)
- yc[[i]] <- aggregate(ispitanik[[i]][[3]], list(ispitanik[[i]][[4]]), mean)
- # poklapanje "istih" klastera
- # prosecni centar i-tog ispitanika
- xc_clean[[i]] <- xc[[i]][-nrow(xc[[i]]),] # izbacuje 111 klaster
- centar_x[i] <- mean(xc_clean[[i]][,2])
- yc_clean[[i]] <- yc[[i]][-nrow(yc[[i]]),]
- centar_y[i] <- mean(yc_clean[[i]][,2])
- }
- centar_probrani_x <- centar_x
- centar_probrani_y <- centar_y
- centar_glob_x <- mean(centar_probrani_x, na.rm = TRUE)
- centar_glob_y <- mean(centar_probrani_y, na.rm = TRUE)
- dc_x <- centar_x - centar_glob_x
- dc_y <- centar_y - centar_glob_y
- for (t in 1:length(centar_x)) {
- ispitanik[[t]][[2]] <- ispitanik[[t]][[2]] - dc_x[t]
- ispitanik[[t]][[3]] <- ispitanik[[t]][[3]] - dc_y[t]
- }
- centar_x <- round(centar_x, digits = 0)
- centar_y <- round(centar_y, digits = 0)
- centar_probrani_x <- round(centar_probrani_x, digits = 0)
- centar_probrani_y <- round(centar_probrani_y, digits = 0)
- dc_x <-round(dc_x, digits = 0)
- dc_y <- round(dc_y, digits = 0)
- centar_glob_x <- round(centar_glob_x, digits = 0)
- centar_glob_y <- round(centar_glob_y, digits = 0)
- #stampa ispitanike za aplikaciju u results
- for (t in 1:length(centar_x)) {
- write.table(cbind(round(ispitanik[[t]][[1]], digits = 0), round(ispitanik[[t]][[2]], digits = 0), round(ispitanik[[t]][[3]], digits = 0)), file = list.filenames[t] ,row.names=FALSE,col.names=FALSE, sep=";")
- }
- rm(list = ls())
- list.filenames <- dir(pattern='*gaze.csv$', recursive = T)
- list.data<-list()
- pozicija_u_lf <- c()
- br_odbacenih <- c()
- ukupan_br_ispitanika <- length(list.filenames)
- #ucitava fajlove i uzima indekse praznih po kojima treba brisati, ti prazni su u pozicija_u_lf
- for (i in 1:length(list.filenames)) {
- #ucita
- list.data[[i]]<-read.csv2(list.filenames[i], header = FALSE)
- if (is.na(list.data[[i]][[2]][[1]]) || is.na(list.data[[i]][[3]][[1]])) { #!!!!!!!!!!!!!!!!!!!!!!!!!!
- pozicija_u_lf <- c(pozicija_u_lf, i)
- }
- #pamti pozicije koje treba izbaciti, tj. ispitanike koje treba izbaciti, izbacuje ih po kriterujumu praznih za gejzove
- }
- pozicija_u_lf <- unique(pozicija_u_lf)
- br_odbacenih <- length(pozicija_u_lf) #obrisi posle
- #PRIPREMA DA obrisemo iz list.filenames lose ispitanike
- #back_up_lista_imena <- list.filenames #kasnije obrisi
- if (length(pozicija_u_lf) >0 ) {
- ociscena_lista <- list.filenames[-pozicija_u_lf]
- za_brisanje <- list.filenames[pozicija_u_lf]
- file.remove(za_brisanje)
- }
- log_baza<- read.table("log.txt", header = TRUE)
- log_baza$odbaceni_2[length(log_baza$odbaceni_2)] <- br_odbacenih
- procenat_odbacenih <- (as.numeric(log_baza$odbaceni_1[length(log_baza$odbaceni_1)]) + as.numeric(log_baza$odbaceni_2[length(log_baza$odbaceni_2)]))/as.numeric(log_baza$br_ispitanika[length(log_baza$br_ispitanika)])
- log_baza$ukupno_odbacenih[length(log_baza$ukupno_odbacenih)] <- paste0(round(procenat_odbacenih, digits = 2)*100,"%")
- odbaceni1p <- as.numeric(log_baza$odbaceni_1[length(log_baza$ukupno_odbacenih)])/as.numeric(log_baza$br_ispitanika[length(log_baza$ukupno_odbacenih)])
- odbaceni2p <- as.numeric(log_baza$odbaceni_2[length(log_baza$ukupno_odbacenih)])/ as.numeric(log_baza$br_ispitanika[length(log_baza$ukupno_odbacenih)])
- log_baza$odbaceni_1[length(log_baza$ukupno_odbacenih)] <- paste0(round(odbaceni1p, digits = 2)*100,"%")
- log_baza$odbaceni_2[length(log_baza$ukupno_odbacenih)] <- paste0(round(odbaceni2p, digits = 2)*100,"%")
- write.table(log_baza, "log.txt", quote =F, row.names = FALSE)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement