#Uvod u R Studio 

#Predvideno gradivo
# instalacija R-a i update
# R literatura + website
# upoznavanje sa R studiom
# vrste varijabli/vektora i njihovo formiranje
# formiranje dataframe/a
# zadatak na casu
# koristene funkcije

#R je projekat zapocet 1992 godine na Universitetu Auckladn, Novi Zeland. Osnivaci su Ross Ihaka i 
#Robert Gentleman stoga i ime R (prvo slovo njihovih imena). To je programski jezik, open-source koji 
#prvenstveno sluzi za staticke analize, analize podataka i vizualizaciju, ali koristi se i za maschine 
#learning, naucno istrazivacke radove.  


#Instalacija----

###R i R studija za Windows 
#Sada kad ste instalirali R, instalirajte RStudio.

###Instalacija R Studija za Windows
###Instalacija R za Mac korisnike

#otvoriti <http://r-project.org>. Klik na >download R< u sredini stranice pod >Getting started<. 
#Izaberite CRAN lokaciju i pritisnite odgovarajuci link. Zatim idite na >Download R for (Mac) OS X<. Idite na file koji sadrzi posljednju verziju pod >Files<.  Spasite .pkg file i dvaput kliknite da ga otvorite, zatim pratite instalacijske instrukcije. Sada kada je R instaliran, potrebno je da downloadujete i instalirate RStudio. 

###Instalacija Rstudija za Mac korisnike
#Idite na <http://rstudio.com> i pritisnite "Download RStudio".  
# Klinite na "Download RStudio Desktop."
# Kliknite na onu verziju koja je predlozena za vas sistem i spasite .dmg file  
# pokrenite .dmg file na vas kompjuter. Dupli klik na file da ga otvorite, i onda >drag and drop< u vas folder aplikacija.  

#da vidimo u kojoj verziji R radimo
version
##                _                           
## platform       x86_64-w64-mingw32          
## arch           x86_64                      
## os             mingw32                     
## system         x86_64, mingw32             
## status                                     
## major          3                           
## minor          6.1                         
## year           2019                        
## month          07                          
## day            05                          
## svn rev        76782                       
## language       R                           
## version.string R version 3.6.1 (2019-07-05)
## nickname       Action of the Toes
#**UPDATE R----
#  Postoji preko R studija ali preporuka je ova preko RGUI (To je ona icona koju ste prvo instalirali)
#1. http://datasciencesource.com/how-to-update-r-and-rstudio-on-windows/ 
#*direktno pristupiti linku preko sift+click

#  Lista korisnih web stranica: ---- 
#\ <http://r-project.org>  
#\ <http://rstudio.com>  
#\ <http://r-bloggers.com>  
#\ <http://kaggle.com>  
#\ <http://quick-r.com>  
#\ <http://datacamp.com>  
#\ <http://rpubs.com>  
#\ <http://stackoverflow.com>  
#\ <https://awesome-r.com/>  
#\ https://github.com/trending/r?since=monthly # Najpopularnije u r u
#\ <http://google.com>   

#Elementi Rstudio-a ----
#script, console,environment.. ici na tools i staviti pod general i history remove duplicate rows i pod appearance i zoom malo veci zoom npr 110 ako je manji font


#R LITERATURA preko Ra ----
help.start ()
## starting httpd help server ... done
## If nothing happens, you should open
## 'http://127.0.0.1:29903/doc/html/index.html' yourself
help.search("random variable") #Pretrazuje fajlove neke fraze ili naziv paketa ali paket mora biti instaliran
#google..

#za ucenje R-a odnosno nekog od paketa, jedna od znacajnijih literatura je documentation od odredjenog paketa

#install.packages("ggplot2") #vi nemojte stavljati hashtag
library (ggplot2) #ovo je paket za vizualizaciju
help.search("ggplot2")
#ili preko google.com ggplot2 documentation otvorite pdf file. ne ici odmah na documentation
 
#!ako se ne moze instalirati paket onda ukucati u konzoli> options(repos = c(CRAN = "http://cran.rstudio.com")) ----

help (plot) #ili ?plot #na ovaj nacin pretrazujete o funkciji plot(). ovo moze zato sto je plot () integrisan u R preko paketa graphics. Ako nije moramo pozvati library ()
#install.packages ("dplyr")
library (dplyr)
## 
## Attaching package: 'dplyr'
## 
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## 
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
help(dplyr) #pomoc u vezi odredjenog paketa, u ovom slucaju dplyr paketa.
?mutate # ili funkciju unutar paketa

getwd ()   #Provjeriti u kojem direktoriju radimo
## [1] "C:/Users/afeta/Dropbox/Academy 387_teaching R/Lesson 1 importing indeksing NA tables"
#da promjenim wd ici na Session pa Set Working Directory pa Choose Directory

list.files () #prikaze fajlove foldera u kojem se nalazim
##  [1] "1.instal-vectori-i-df.R"        "1.instal-vectori-i-df.spin.R"  
##  [3] "1.instal-vectori-i-df.spin.Rmd" "1.instal vectori i df.R"       
##  [5] "2.indeksiranje.R"               "3.Na.R"                        
##  [7] "4.tables in R.R"                "indeksiranje - brisati.R"      
##  [9] "install old package.R"          "mydf.csv"                      
## [11] "Tokyo_updated.xlsx"             "Uvod u R i R studio.pptx"      
## [13] "Uvod u R i R studio_R-figure"   "WHO.csv"                       
## [15] "Zadaci lesson 1.docx"
#setwd () #mijenjam direktorij u kojem zelim da radim - moze i preko session.
#U konsoli se takodjer pojavi "put" direktorija u kojem se nalazimo

#1MATEMATICKE OPERACIJE: ----
##Osnovne
2+3
## [1] 5
2*3
## [1] 6
2-3
## [1] -1
sin (5)
## [1] -0.9589243
pi #r prepoznaje pi
## [1] 3.141593
8/2
## [1] 4
4^4
## [1] 256
prod (2,4,6)
## [1] 48
sqrt(8)
## [1] 2.828427
8^(1/2) #probajte bez zagrade # rezultat je 4
## [1] 2.828427
8^1/2
## [1] 4
#sqrt(x) == x^(1/2)

#ako zelimo treci korijen iz 60
60^(1/3)
## [1] 3.914868
# 2. KREIRANJE VEKTORA NEKOLIKO NACINA i vrste formata ----

dohodak <- seq(from = 490.95,to = 2000,length.out = 12) # seq je funkcija za formiranje vektora a u zagradi se nalaze tri elementa. Min, max i duzina vektora
?seq #kada ne znate o funkciji onda mozete na ovaj nacin da je pretrazujete

regije<- rep (c("EU", "Istocna Evropa", "Ex Yu", "Zapadni Balkan"),3) #factor varijabla
godine <- c (2008:2019) #daje sve brojeve od 2008 do 2018
length(godine) #da provjerimo koliko elemenata ima vektor 
## [1] 12
#Vrstu vektora provjeravamo ga sa funkcijom class():
class (dohodak) #numeric jer iznosi mogu biti i sa zarezom
## [1] "numeric"
class(regije) # karakter ali za potrebe regresije ce se morati formatirati kao faktor
## [1] "character"
class (godine) #integer, numricka je ali ne moze biti 2008,5 godina
## [1] "integer"
str (regije) #provjerava strukturu vektora
##  chr [1:12] "EU" "Istocna Evropa" "Ex Yu" "Zapadni Balkan" "EU" ...
#rekli smo da su nam regije faktori. 
table(regije)# tabelu mozemo dobiti kao faktor. Ali ako hocemo izrahunati dohodak po regijama
## regije
##             EU          Ex Yu Istocna Evropa Zapadni Balkan 
##              3              3              3              3
regije <- as.factor(regije) #sada vidimo da su nam regije nivoi
class(regije)
## [1] "factor"
levels(regije) #pokazuje nam nivoe prema abecednom redu, iako smo prvo naveli "Istohna Evropa". Ako zelimo Zapadni Balkan nakon EU onda
## [1] "EU"             "Ex Yu"          "Istocna Evropa" "Zapadni Balkan"
regije <- factor (regije, levels = c("EU", "Zapadni Balkan", "Istocna Evropa", "Ex Yu"))

levels(regije) #sada je Zapadni Balkan na drugom mjestu
## [1] "EU"             "Zapadni Balkan" "Istocna Evropa" "Ex Yu"
#BRISANJE FAKTORA: Cesto nam se desi da zelimo neki faktor da izbrisemo. Za to koristimo funkciju droplevels.factor ().

#primjer drop levels za vektor regije

regije1 <- droplevels(regije, "Ex Yu")

##pitanje za grupu (minuta): koliko sada faktora ima  vektor regije1? ----
##sta se desilo sa "Ex Yu"? Odgovorite bez kucanja koda.









#ODGOVOR
regije1
##  [1] EU             Istocna Evropa <NA>           Zapadni Balkan
##  [5] EU             Istocna Evropa <NA>           Zapadni Balkan
##  [9] EU             Istocna Evropa <NA>           Zapadni Balkan
## Levels: EU Zapadni Balkan Istocna Evropa
levels(regije1) #tri nivoa, tamo gdje je bila Ex-Yu ostalo je NA
## [1] "EU"             "Zapadni Balkan" "Istocna Evropa"
#izlista nam prvo EU jer E je prvo po abecedi

regije2 <- relevel(regije, "Istocna Evropa") #ako zelimo da je "Istocna Evropa" prva. Prilikom izrade modela susrecemo se sa ovim
levels(regije2)
## [1] "Istocna Evropa" "EU"             "Zapadni Balkan" "Ex Yu"
#Zadaci:----
#1. kreirati vektor od 15 elemenata i spastiti pod imenom x. Izaberite koji god nacin zelite.
#2. pomnoziti vektor sa 2 i spasiti pod imenom y
#3. U jednoj recenici objasniti razliku izmedju factor i character varijable
#4. Navesti primjer numericke varijable continuous i diskretne tj. integer numericke varijable.
#5. Formirati numericki vektor tako da je minimum 4, maksimum 20, a razlika izmedju dva susjedna broja je 3
##(savjet za 5. koristiti google ili ?seq u consoli. Nismo imali ovaj primjer)
#6. Formirati faktor varijablu zanimanje i navesti zanimanja: cuvar, sobar, doktor, medicinska sestra. TIP: provjeriti sa class ()
#7.ispustiti jedan nivo npr cuvar i spasiti pod imenom "zanimanja1"



#Rjesenja:
x<- c(1:15)
y <- 2*x
# faktor ima kategorije (urbano/ruralno, rasa, spol..), a character je tekstualan npr "adresa.."
# Kontinuous: temperatura, visina, tezina..., descrete (broj dana u godini, broj clanova domacinstva...)
seq(4,20, by=3) #iako smo dali maksimalno 20 radi by = 3, maksimalno nam je 19
## [1]  4  7 10 13 16 19
zanimanja <- c ("cuvar", "sobar", "doktor", "medicinska sestra")
class(zanimanja)
## [1] "character"
zanimanja <- as.factor(zanimanja)
class(zanimanja)
## [1] "factor"
levels(zanimanja)
## [1] "cuvar"             "doktor"            "medicinska sestra"
## [4] "sobar"
zanimanja1 <- droplevels.factor(zanimanja, "cuvar")
levels(zanimanja1)
## [1] "doktor"            "medicinska sestra" "sobar"
##Bitne napomene: ----
#1.kada formirate vektore ne dajite im imena postojecih funkcija npr. c, seq, min, max, sum...itd, jer to zbunjuje R
#2. ne dajite imena vektora koja ste vec dali, jer R ne upozorava da vec imate takav vektor ili bazu podataka, nego automatski brise prethodni i kreira novi

##NOVI SAMOSTALNI ZADATAK---- 10 minuta
#Ovo nismo radili i pokusajte se osloniti na google za odgovor
#1. kreirajte interval sa razmakom od 5 od  numerickog vektora kojeg ste vec kreirali "dohodak"
#spasite ga pod nazivom interval





#ODGOVOR
interval <- cut(dohodak, 5) #spasavamo ga pod nazivom interval, presjeca na 5 jednakih dijelova
unique(interval) # 
## [1] (489,793]          (793,1.09e+03]     (1.09e+03,1.4e+03]
## [4] (1.4e+03,1.7e+03]  (1.7e+03,2e+03]   
## 5 Levels: (489,793] (793,1.09e+03] ... (1.7e+03,2e+03]
class(interval) #factor 
## [1] "factor"
str(interval)
##  Factor w/ 5 levels "(489,793]","(793,1.09e+03]",..: 1 1 1 2 2 3 3 4 4 5 ...
#e+03 znaci da je broj u hiljadama tj. 1.4e+03= 1400. U R zarez i tacka su po americkom sistemu tj. ono sto je kod nas zarez u izrazavanju borjeva kod nas je tacka.
#postoji nacin da se to izmjeni u sistemu ali bolje je nase baza prilagoditi u americki sistem, prilikom importa. 


##Dataframe ---- 
# formirajmo od vec formiranih vektora, dohodak, godine i regije
mydataframe <- data.frame (dohodak, godine, regije, interval)
View(mydataframe)

summary(mydataframe)
##     dohodak           godine                regije                interval
##  Min.   : 490.9   Min.   :2008   EU            :3   (489,793]         :3  
##  1st Qu.: 868.2   1st Qu.:2011   Zapadni Balkan:3   (793,1.09e+03]    :2  
##  Median :1245.5   Median :2014   Istocna Evropa:3   (1.09e+03,1.4e+03]:2  
##  Mean   :1245.5   Mean   :2014   Ex Yu         :3   (1.4e+03,1.7e+03] :2  
##  3rd Qu.:1622.7   3rd Qu.:2016                      (1.7e+03,2e+03]   :3  
##  Max.   :2000.0   Max.   :2019
head(mydataframe)
##     dohodak godine         regije           interval
## 1  490.9500   2008             EU          (489,793]
## 2  628.1364   2009 Istocna Evropa          (489,793]
## 3  765.3227   2010          Ex Yu          (489,793]
## 4  902.5091   2011 Zapadni Balkan     (793,1.09e+03]
## 5 1039.6955   2012             EU     (793,1.09e+03]
## 6 1176.8818   2013 Istocna Evropa (1.09e+03,1.4e+03]
tail (mydataframe)
##     dohodak godine         regije           interval
## 7  1314.068   2014          Ex Yu (1.09e+03,1.4e+03]
## 8  1451.255   2015 Zapadni Balkan  (1.4e+03,1.7e+03]
## 9  1588.441   2016             EU  (1.4e+03,1.7e+03]
## 10 1725.627   2017 Istocna Evropa    (1.7e+03,2e+03]
## 11 1862.814   2018          Ex Yu    (1.7e+03,2e+03]
## 12 2000.000   2019 Zapadni Balkan    (1.7e+03,2e+03]
#Korisno za znati
diff (mydataframe$dohodak) ## razlika izmedju dva broja unutar jednog vektora
##  [1] 137.1864 137.1864 137.1864 137.1864 137.1864 137.1864 137.1864
##  [8] 137.1864 137.1864 137.1864 137.1864
#`df$v1-df$v2` # ako zelite da oduzmete dvije varijable / ova terminologija se koristi na forumima, kad se radi o imaginarnom primjeru. 

#spasavanje baze. 
##na kraju spasavamo bazu podataka>

write.csv(mydataframe, "mydf.csv")


#PROVJERA DA LISTE SPASILI 

list.files()
##  [1] "1.instal-vectori-i-df.R"        "1.instal-vectori-i-df.spin.R"  
##  [3] "1.instal-vectori-i-df.spin.Rmd" "1.instal vectori i df.R"       
##  [5] "2.indeksiranje.R"               "3.Na.R"                        
##  [7] "4.tables in R.R"                "indeksiranje - brisati.R"      
##  [9] "install old package.R"          "mydf.csv"                      
## [11] "Tokyo_updated.xlsx"             "Uvod u R i R studio.pptx"      
## [13] "Uvod u R i R studio_R-figure"   "WHO.csv"                       
## [15] "Zadaci lesson 1.docx"
#BITNE UCESTALE FUNKCIJE (zajedno odgovoriti koja funkcija za sta sluzi)

#as.character()
#as.factor ()
#as.numeric ()
#c() #kreiranje vektora
##class () # clasa ili tip objekta (matrica, baza podataka, vektor...)
#diff ()
#droplevels ()
#help ()
#install.packages ("naziv_paketa") # Moraju biti navodni znaci kad se instalira paket
#library (naziv_paketa) # pozovete paket - bez navodnika
#length () #duzina vektora
#levels()
#ls () #imamo listu trenutnih objekata iz Environmenta
#list.files() #filovi u radnom direktoriju 
#mean ()
#median ()
#quantile ()
#read.csv()
#relevel()
#rep ()
#rm () #koristimo kada zelimo da obrisemo nesto iz environmenta
#round ()
#sd ()
#seq () 
#str () # struktura vektora ili baze podataka
#summary ()
#write.csv()

#brisanje working space  
#Manuelno + code rm ()

#dodatno importovanje ORACLE AND SQL 


#R ORACLE AND SQL

#https://www.r-bloggers.com/connecting-r-to-an-oracle-database/ 
#https://www.youtube.com/watch?v=9OSB9pmlJpI