#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