1
|
Sťahovanie tetového súboru
fileUrl <- " odkaz
download.file(fileUrl, destfile = "data\\iris.csv")
datum <- date()
list.files("data")
iris = read.table("data\\iris.csv", sep = ";", header = TRUE)
head(iris,3)
tail(iris,4)
iris1 = read.csv("data\\iris.csv")
iris2 = read.csv2("data\\iris.csv")
|
|
|
2
|
Sťahovanie excel súboru
library(xlsx)
install.packages("xlsx")
fileUrl <- " odkaz
download.file(fileUrl,destfile="./data/iris_excel.xlsx")
iris_excel = read.xlsx("./data/iris_excel.xlsx",sheetIndex = 1, header = TRUE)
subdata = read.xlsx("./data/iris_excel.xlsx",sheetIndex = 1, colIndex = 2:3, rowIndex = 1:5)
iris_excel1 = read.xlsx2("./data/iris_excel.xlsx",sheetIndex = 1, header = TRUE)
|
|
|
3
|
Sťahovanie XML súboru
library(XML)
install.packages("XML")
fileUrl <- " odkaz
doc <- xmlTreeParse(fileUrl,useInternal=TRUE) # uloží XML súbor, ak je FALSE tak aj ďalšie informácie
root <- xmlRoot(doc) # výpis bez hlavičky <?xml version="1.0" encoding="UTF-8"?>
xmlName(root) # výpis hlavného tagu
root[[2]] # výpis druhého jedla
root[[2]][[1]] # výpis druhého jedla a prvého prvku (názov)
xmlSApply(root,xmlValue) # vypíše všetky jedlá a informácie o nich do jedného riadku
|
|
|
11
|
|
3. 03.11.2015, 09:24
Sťahovanie XML súboru
library(XML)
install.packages("XML")
fileUrl <- "http://www.w3schools.com/xml/simple.xml"
doc <- xmlTreeParse(fileUrl,useInternal=TRUE) # uloží XML súbor, ak je FALSE tak aj ďalšie informácie
root <- xmlRoot(doc) # výpis bez hlavičky <?xml version="1.0" encoding="UTF-8"?>
xmlName(root) # výpis hlavného tagu
root[[2]] # výpis druhého jedla
root[[2]][[1]] # výpis druhého jedla a prvého prvku (názov)
xmlSApply(root,xmlValue) # v...
▲
03.11.2015, 11:25
|
Vyberanie dát z XML súborov: XPATH
xpathSApply(root,"//name",xmlValue) # vypíše iba mená jedál
xpathSApply(root,"//price",xmlValue) # vypíše iba ceny jedál
|
|
|
4
|
Sťahovanie Json súboru
library(jsonlite)
install.packages(jsonlite)
data_json = fromJSON(" odkaz # načítanie dát
names(data_json) # výpis stlpcov
names(data_json$adresa) # výpis prvok, z ktorých sa skladá stlpec adresa
data_json$adresa$mesto # výpis miest v dátach
Sťahovanie HTML súboru
library(XML)
s = htmlParse(" odkaz # zadanie odkazu
tabs = readHTMLTable(s, stringsAsFactors=FALSE) # načítanie HTML do tabulky
popes = tabs[[1]][2:6,c(2,3,5)] # výber iba pápežov (tab.1) v 2 až 6 riadku a k ním 2,3,5 stlpec
names(popes) = c("meno","narodeny", "zvoleny") # pomenovanie stlpcov
|
|
|
5
|
DATA TABLE
library(data.table)
DF = data.frame(x=rnorm(9),y=rep(c("a","b","c"),each=3),z=rnorm(9))
DT = data.table(x=rnorm(9),y=rep(c("a","b","c"),each=3),z=rnorm(9))
tables()
DT[DT$x > 0] # výber riadkov len kde hodnota stlpca X > 0
DT[,mean(x)] # výpis priemeru stlpca X
DT[,table(y)] # výpis v tabulke počty hodnot slpca Y
DT[,w:=z^2] # vytvorenie nového stlpca w, ktorý ma hodnoty z^2
DT[,f:=x>0] # vytvorenie stlpca f, ktorý má hodnotu T/F, podľa toho či X je väčšie ako 0
DT[,y:={tmp = x+y; tmp^2}] # zmena stlpca a viac operácií v jednom expression
DT[,b:=sum(x),by=f] # suma hodnôt X podľa hodnôt stlpca f
DT[,.N,by=f] # počet elementov podľa faktoru f
DT1 <- data.table(x=rep(c("a","b","c"),each=100), y=rnorm(300)) # vytvorenie tabulky, kde x má hodnoty a,b,c
setkey(DT,x) # nastavenie premennej kľúča
DT1['a']
DT2 <- data.table(x=c('a', 'a', 'b', 'dt1'), y=1:4) # tabulka, slpce x a y
DT3 <- data.table(x=c('a', 'b', 'dt2'), z=5:7) # tabulka, stlpca x a z
setkey(DT2, x) # nastavenie klúča
setkey(DT3, x) # nastavenie klúča
merge(DT2, DT3) # spojenie tabuliek
|
|
|
6
|
SUBSETTING SORTING
X <- data.frame("var1"=sample(1:5),"var2"=sample(6:10),"var3"=sample(11:15))
X$var2[c(1,3)] = NA
X[,1] # výber všetkých riadkov a 1 stlpca
X[,"var1"] # výber všetkých riadkov a stlpca s názvom "var1"
X[1:2,"var2"] # výber 1 až 2 riadka a stlpca s názvom "var2"
X[(X$var1 <= 3 & X$var3 > 11),] # výber riadkov, ktoré splňajú dané podmienky a všetky stlpce (& - a zároveň)
X[(X$var1 <= 3 | X$var3 > 15),] # výber riadkov, ktoré splňajú jednu z daných podmienok a všetky slpce (| - alebo)
X[which(X$var2 > 8),] # výber riadkov kde var2 > 8, which - ignorovanie NA hodnôt
X$d = rnorm(5) # pridanie stlpca d
Y = cbind(X,rnorm(5)) # vytvorenie tabulky/matice Y s dátami X a novým slpcom
sort(X$var1) # usporiadanie premennej var1 zostupne(od najmenšieho po najväčšie)
sort(X$var1,decreasing=TRUE) # usporiadanie premennej var1, vzostupne, default je FALSE
sort(X$var2,na.last=TRUE) # usporiadanie var2, berie do úvahy aj prázdne hodnoty
X[order(X$var1),] # usporiadanie celého DF podľa premennej var1
X[order(X$var1,X$var3),] # viac premenných pre usporiadanie, usporiada potom podľa poradia v order
|
|
|
7
|
|
6. 03.11.2015, 09:46
SUBSETTING SORTING
X <- data.frame("var1"=sample(1:5),"var2"=sample(6:10),"var3"=sample(11:15))
X$var2[c(1,3)] = NA
X[,1] # výber všetkých riadkov a 1 stlpca
X[,"var1"] # výber všetkých riadkov a stlpca s názvom "var1"
X[1:2,"var2"] # výber 1 až 2 riadka a stlpca s názvom "var2"
X[(X$var1 <= 3 & X$var3 > 11),] # výber riadkov, ktoré splňajú dané podmienky a všetky stlpce (& - a zároveň)
X[(X$var1 <= 3 | X$var3 > 15),] # výber riadkov, ktoré splňajú...
▲
03.11.2015, 09:47
|
Pokračovanie v druhom type tabuliek
s1 = seq(1,10,by = 2)
s2 = seq(1,10,length = 3)
X <- data.frame("var1"=sample(1:5),"var2"=sample(6:10),"var3"=sample(11:15))
X$c = ifelse(X$var1 > 0,TRUE,FALSE) # vytvorenie binárneho stlpca c
X$d = cut(X$var1,breaks = quantile(X$var1)) # vytvorenie kategorialnej premennej z numerického atribútu
install.packages("Hmisc")
library(Hmisc)
X$e = cut2(X$var1,g=4) # vytvorenie kategorickej premennej cez príkaz cut2
X$f = factor(X$var1) # vytvorenie faktoru z premennej var1
yesno <- sample(c("yes","no"),size=10,replace=TRUE) # vytvorenie vektora s dlžkou 10 z hodnôt yes,no
yesnofac = factor(yesno,levels=c("yes","no")) # vytvorenie faktora a zadanie levelov
relevel(yesnofac,ref="no") # zmena poradia levelov
install.packages("plyr")
library(Hmisc)
library(plyr)
X2 = mutate(X,novy = cut2(var1,g=4))
|
|
|
8
|
SUMMARIZING
iris <- iris
head(iris,5)
tail(iris,6)
summary(iris) # sumár info o každom atribúte (stlpci)
str(iris) # datailný pohľad na atribúty
quantile(iris$Sepal.Length) # kvantily pre numerické atribúty, rovnaké ako v summary, je však možné nastaviť vlastné rozdelenie
quantile(iris$Sepal.Length,c(0,0.5,1)) # kvantily iba pre 0,50 a 100%
table(iris$Sepal.Length) # štatistika početnosti rôzných hodnôt atribútu
table(iris$Sepal.Length,iris$Sepal.Width) # môžeme zadať aj viac premenných
rowSums(iris[,1:2]) # súčet riadkov prvých 2 stlpcov
colSums(iris[,1:2]) # súčet prvých 2 stlpcov
sum(is.na(iris$Sepal.Length)) # počet prázdnych hodnôt stlpca
any(is.na(iris$Sepal.Length)) # T alebo F, podľa toho, či sú v stlpci prázdne hodnoty
all(iris$Sepal.Length > 0) # testovanie, či sú všetky hodnoty v stlpci väčšie ako 0
colSums(is.na(iris)) # počet prázdnych hodnôt v každom stlpci
all(colSums(is.na(iris))==0) # T alebo F o tom, či sú všetky počty NA hodnôt 0
table(iris$Sepal.Length %in% c(5.1,5.0)) # výber počtu hodnôt vybraného stlpca
table(iris$Species %in% c("setosa","viginica"))
table(iris$Species %in% c("setosa"))
iris[iris$Species %in% c("setosa"),] # výpis dát len s hodnotou v stlpci Species = setosa
data(UCBAdmissions)
DF = as.data.frame(UCBAdmissions) # vytvorenie dataframe
summary(DF) # súhrn dataframe
xt <- xtabs(Freq ~ Gender + Admit,data=DF) # vytvorenie kontingenčnej tabuľky
xt2 <- xtabs(Freq ~.,DF) # vytvorenie viacrozmernej kontingenčnej tabulky (flat tabulka)
summary(xtabs(Freq ~.,DF)) # sumár nad celou tabuľkou
ftable(xt) # flat tabuľka
|
|
|
9
|
Posledná vec ku tabuľkám, samotné spájanie.
# odkaz
# odkaz
reviews = read.csv("./data1/reviews.csv")
solutions <- read.csv("./data1/solutions.csv")
names(reviews)
names(solutions)
intersect(names(reviews),names(solutions)) # spoločne názvy atribútov
merged1 = merge(reviews,solutions,by="id")
merged2 = merge(reviews,solutions,by.x="solution_id",by.y="id")
merged3 = merge(reviews,solutions,by.x="solution_id",by.y="id",all=TRUE) # pridá aj nenamapované riadky
merged4 = merge(reviews,solutions,all=TRUE) # pokúsi sa o defaultné spojenie cez všetky spoločné atribúty
library(plyr)
df1 = data.frame(id=sample(1:10),x=rnorm(10))
df2 = data.frame(id=sample(1:10),y=rnorm(10))
arrange(join(df1,df2),id) # spojenie df1 a df2 pomocou knižnice plyr a stlpca id
df3 = data.frame(id=sample(1:10),z=rnorm(10))
dfList = list(df1,df2,df3) # vytvorenie listu z prvkov df1,df2,df3
join_all(dfList) # spojenie všetkych prvkov listu
|
|
|
10
|
EXPLORATORY GRAPHS
download.file(" odkaz
pollution <- read.csv("data/avgpm25.csv", colClasses = c("numeric", "character","factor", "numeric", "numeric"))
head(pollution)
summary(pollution$pm25)
boxplot(pollution$pm25, col = "blue") # boxplot atribútu pm25, farba modrá
hist(pollution$pm25, col = "green") # histogram pm25, zelená farba
rug(pollution$pm25)
hist(pollution$pm25, col = "green", breaks = 100) # histogram pm25, breaks = rozdelenie v grafe
rug(pollution$pm25)
boxplot(pollution$pm25, col = "blue")
abline(h = 12) # boxplot s pridanou čiarou na čísle 12
hist(pollution$pm25, col = "green")
abline(v = 12, lwd = 2) # pridanie čiary vertikálne na čislo 12, hrúbka 2
abline(v = median(pollution$pm25), col = "magenta", lwd = 4) # čiara na mediane, ružovou farbou, hrúbka 4
# barplot, pre stlpec region, s danou farbou a nadpisom
barplot(table(pollution$region), col = "wheat", main = "Number of Counties in Each Region")
# boxplor pre 2 atribúty
boxplot(pm25 ~ region, data = pollution, col = "red")
boxplot(pollution$pm25 ~ pollution$region, col = "red")
par(mfrow = c(2, 1), mar = c(4, 4, 2, 1)) # nastavenie pre rozdelenie grafov, mar(dole,vľavo,hore,vpravo)
hist(subset(pollution, region == "east")$pm25, col = "green") # histogram pre podmnožinu dát (subset)
hist(subset(pollution, region == "west")$pm25, col = "green")
with(pollution, plot(latitude, pm25)) # scatterplot (bodový graf) z dát pollution, atribúty latitude, pm25
abline(h = 12, lwd = 2, lty = 2) # pridanie horizontálnej čiary, s hrúbkou 2 a typ čiary 2(prerušovaná)
with(pollution, plot(latitude, pm25, col = region)) # scatterplot (bodový graf) z dát pollution, pre latitude a pm25, rozdelenie farieb podľa hodnoty region
abline(h = 12, lwd = 2, lty = 2)
# legenda, vpravo hore, názvy legendy sú levely v regione, farby, typ označenia
legend(x="topright", legend = levels(pollution$region), col=c("red","black"), pch=1)
par(mfrow = c(1, 2), mar = c(5, 4, 2, 1))
with(subset(pollution, region == "west"), plot(latitude, pm25, main = "West"))
with(subset(pollution, region == "east"), plot(latitude, pm25, main = "East"))
|
|
|
12
|
LAPPLY
lapply(Y,function(element) element[,1])
x <- list(a = 1, b = 1:3, c = 10:100)
lapply(x, FUN = length)
sapply(x, FUN = length)
lapply(x, FUN = sum)
sapply(x, FUN = sum)
x1 <- list(a = matrix(1:4, 2, 2), b = matrix(1:6, 3, 2))
lapply(x1, function(elt) elt[,1])
X = list(a = 1:5, b = 6:10)
lapply(X,mean)
sapply(X,mean)
lapply(X,quantile)
lapply(X,quantile,c(0,0.5,1))
lapply(X,quantile,probs = seq(0,1,0.5))
sapply(X,quantile)
sapply(X,quantile,c(0,0.5,1))
sapply(X,quantile,probs = seq(0,1,0.5))
APPLY
M <- matrix(1:6,3,2)
apply(M,2,sum) # súčet stlpcov
apply(M,1,sum) # súčet riadkov
apply(M,1,mean)
apply(M,2,mean)
x <- matrix(rnorm(12), 4, 3)
apply(x, 1, quantile, probs = c(0.25, 0.75))
a <- array(rnorm(2*2 ),c(2,2,10)) # 40 prvkov, veľkosť 2x2 a 10 krát
apply(a,c(1,2),mean)
m <- matrix(c(1:10, 11:20), nrow = 10, ncol = 2)
m
apply(m, 1:2, function(x) x/2)
|
|
|
13
|
f = seq(1,100, by = 2) postupnost seq(x,y, by z)
x=od
y=po
z = rozdiel medzi nimi
vytvorenie matice
matica=matrix(1:10,5,2)
vytvorenie matice ako chcem
M=matrix(c(6:10, 16:20),5,2)
vytvorenie vektora
vektor=c(1,2,3,4,5)
|
|
|
14
|
x=sample(1:6, 4, replace = TRUE)
|
|
|
15
|
Tak mi to asi fakt vcera neodoslalo..
Som pisal, ze zvlastny jazyk, pripomina mi to jazyk LUA smrncnuty kvapkou ERLANGu..
|
|
|
16
|
x <- 5
x
print(x)
y = 10
y
# komentar
msg = "hello"
msg
x = 5:15
x # implicitny vypis
x[6]
#vektor
x = vector(mode = "logical", length = 10)
x
v <- c(1.2, 0.7) # numericky vektor
v <- c(TRUE, FALSE) # vektor logickyh hodnot
v <- c(T, F, T) # vektor logickych hodnot
v <- c("y", "w", "z") # vektor znakov
v <- 3:10 # celociselny vektor
v <- c(1+3i, 2+2i) # komplexny vektor
# implicitna korekcia
z <- c(2.5, "ahd") # vysledok - vektor znakov
z <- c(TRUE, 7) # vysledok - numericky vektor
z <- c("a", TRUE) # vysledok - vektor znakov
#uprava typu vektora
x <- 0:4
class(x)
as.numeric(x)
as.logical(x)
as.character(x)
#Matice
M = matrix(nrow = 2, ncol = 3) #nrow- pocet riadkov, ncol- pocet stlpcov
M
dim(M)
M = matrix(1:6,nrow = 2, ncol = 3)
M
L <- 1:10 # vytvori vektor 10 integer hodnot
L
dim(L) <- c(2, 5)
L
x <- 3:5
y <- 13:15
cbind(x, y) #vytvori maticu do stlpca
rbind(x, y) #vytvori maticu do riadku
#zoznam
zoznam = list(0.2, "h", list("h2", 1 + 2i), TRUE)
zoznam
x = factor(c("ford", "bmw", "ford", "bmw", "bmw"))
x
table(x)
unclass(x)
#datum a cas
x = Sys.Date() #zobrazi datum
x
y = Sys.time() #zobrazi datum a cas
y
#NA- Not Available (chybajuca hodnota), NaN- Not A Number (nedefinovana)
x <- c(1, NaN, NA)
is.na(x)
is.nan(x)
#data frames- ukladanie tabulkovych dat
tab = data.frame(a1= 1:5, a2 = c(0.2, 0.7, 1.5, 2.2,3.4))
tab
#nazvy objektov
x = 1:2
names(x) = c("a1", "a2")
x
x = list(a = 1, b = 2, c = 3)
x
m = matrix(1:4, nrow = 2, ncol = 2)
dimnames(m) = list(c("a", "b"), c("c", "d"))
m
#pristup k podmnozinam
x <- c("a", "b", "c", "c", "d")
x[1]
x[1:4]
x[x > "a"]
u <- x > "a"
u
x[u]
x <- list(a1 = 1:3, a2 = 0.3, "d")
x[1]
x[[1]]
x$a2
x[["a2"]]
x["a2"]
x[c(1,3)]
#vektorove/maticove operacie
x <- 1:4; y <- 6:9
x + y
x > 2
x >= 2
y == 8
x * y
x / y
M = matrix(1:4, 2, 2)
N = matrix(c(10,5,5,1), 2, 2)
M
N
M * N # nasobenie po elementoch
M %*% N # skutocne nasobenie matic
|
|
|
17
|
f2 <- function(x) {
x^2
}
f <- function(x,y)
{
x + y
x - y
x * y
x / y
}
# if, else - testovacia podmienka
x <- 0
if (x > 0) {
print("Kladne cislo")
} else if (x < 0) {
print("Zaporne cislo")
} else
print("Nula")
# FOR - cyklus fixného poctu opakovani
f = seq(1,100, by = 2)
a = NULL
for (i in 1:50)
{
a[i] = f[i]^2
}
print(a)
#FOR, NEXT - preskoci interakciu v cykle
for(i in 1:100)
{
if(i <= 50)
{
next
}
print(i)
}
# WHILE - cyklus bezi dovtedy kym je platna podmienka
count <- 0
while(count < 10)
{
print(count)
count <- count + 1
}
# REPEAT - spusta nekonecny cyklus, BREAK - ukoncuje beh cyklu
sum <- 1
repeat
{
sum <- sum + 2
print(sum)
if (sum > 11)
break
}
# LAZY - funcia je vyhodnocovana ay v momente ak je potrebna
f <- function(a,b)
{
a^2
}
f(2)
f <- function(x, y = 2) {
x^y
}
# ARGUMENT
args(paste)
paste("a","h","o","j")
paste("a","h","o","j",sep=":")
paste("a","h","o","j",se=":")
# Lexikalny/dynamicky SCOPING
p = 0
f = function(x){
p = 10
p + g(x)
}
g = function(x){
x+p
}
f(2)
#
f <- function(x)
{
y <- 5
x + y
}
# funkcie pre cyklicke spracovanie
# APPLY
M <- matrix(1:6,3,2)
apply(M,2,sum) # sucet stlpcov
apply(M,1,sum) # sucet riadkov
apply(M,1,mean) #urobi sumu po stlpcoch
apply(M,2,mean) #priemer po riadkoch
x <- matrix(rnorm(12), 4, 3)
apply(x, 1, quantile, probs = c(0.25, 0.75))
a <- array(rnorm(2*2 ),c(2,2,10)) # 40 prvkov, velkost 2x2 a 10 krat
apply(a,c(1,2),mean)
m <- matrix(c(1:10, 11:20), nrow = 10, ncol = 2)
m
apply(m, 1:2, function(x) x/2)
#
#LAPPLY, SAPPLY- zjednodusuje vysledok lapply
X = list(a = 1:5, b = 6:10)
lapply(X,mean)
sapply(X,mean)
lapply(X,quantile)
lapply(X,quantile,c(0,0.5,1))
lapply(X,quantile,probs = seq(0,1,0.5))
sapply(X,quantile)
sapply(X,quantile,c(0,0.5,1))
sapply(X,quantile,probs = seq(0,1,0.5))
##
x <- list(a = 1, b = 1:3, c = 10:100)
lapply(x, FUN = length)
sapply(x, FUN = length)
lapply(x, FUN = sum)
sapply(x, FUN = sum)
#
Y <- list(a = matrix(1:4,2,2),b = matrix(1:8,4,2))
lapply(Y,function(element) element[,1])
x1 <- list(a = matrix(1:4, 2, 2), b = matrix(1:6, 3, 2))
lapply(x1, function(elt) elt[,1])
#TAPPLY- pouzitie na aplikaciu funkcie cez podmnozinu vektora, SPLIT
x <- 1:20
y <- factor(rep(letters[1:5], each = 4))
tapply(x, y, sum)
tapply(x,y,sum,simplify = FALSE)
split(x,y)
#
attach(iris)
tapply(iris$Petal.Length, Species, mean)
tapply(iris$Petal.Length, Species, mean,simplify = FALSE)
split(iris$Petal.Length,Species,drop=FALSE)
#MAPPLY- aplikuje paralelne funkciu podla suboru parametrov
l1 <- list(a = c(1:10), b = c(11:20))
l2 <- list(c = c(21:30), d = c(31:40))
mapply(sum, l1$a, l1$b, l2$c, l2$d)
mapply(sum,1:5,1:5,1:5)
mapply(rep, 1:4, 4:1)
|
|
|
18
|
setwd("../") #nastavenie adresára
# testovanie existencie adresára
file.exists("nazovAdresara")
dir.create("nazovAdresara") #vytvori ak neexistuje
dir.create("data")
# ziskavanie dat zo suborov na webe
fileUrl <- " odkaz
download.file(fileUrl, destfile = "irisdata.csv")
datum <- date()
# nacitanie dat
iris = read.table("irisdata.csv", sep = ";", header = TRUE)
iris1 = read.csv("irisdata.csv") #separator ,
iris2 = read.csv2("irisdata.csv") #separator ;
#head(iris,3) #prvé riadky
#tail(iris,4) #posledné
list.files("SSvHI") #obsah
#nacitavanie excel suborov
library(xlsx)
library(readxl)
fileUrl <- " odkaz
download.file(fileUrl,destfile="irisdata.xlsx",mode = "wb")
iris_excel = read.xlsx("irisdata.xlsx",sheetIndex = 1, header = TRUE)
subdata = read.xlsx("irisdata.xlsx",sheetIndex = 1, colIndex = 2:3, rowIndex = 1:5)
iris_excel1 = read.xlsx2("irisdata.xlsx",sheetIndex = 1, header = TRUE)
#XML
library(XML)
library(RCurl)
fileUrl <- " odkaz
xData = getURL(fileUrl)
doc = xmlParse(xData)
#doc <- xmlTreeParse(fileUrl,useInternal=TRUE) # ulozi XML subor, ak je FALSE tak aj dalsie info
root <- xmlRoot(doc) # vypis bez hlavicky <?xml version="1.0" encoding="UTF-8"?>
xmlName(root) # vypis hlavneho tagu
root[[2]] # vypis druheho jedla
root[[2]][[1]] # vypis druheho jedla a prveho prvku (nazov)
xmlSApply(root,xmlValue) # vypise vsetky jedla a informacie o nich do jedneho riadku
xpathSApply(root,"//name",xmlValue) # vypise iba mena jedal
xpathSApply(root,"//price",xmlValue) # vypise iba ceny jedal
#JSON subory
library(jsonlite)
data_json = fromJSON(" odkaz # nacitanie dat
names(data_json) # vypis stlpcov
names(data_json$adresa) # vypis prvok, z ktorych sa sklada stlpec adresa
data_json$adresa$mesto # vypis miest v datach
#RMySQL
library(RMySQL) # nacitanie kniznic
library(DBI)
genDB = dbConnect(MySQL(),user="genome", host="genome-mysql.cse.ucsc.edu") # vytvorenie spojenia
DB = dbGetQuery(genDB,"show databases;") # ukazka dabazy
dbDisconnect(genDB) # ukoncenie spojenia
#########################
hg19 <- dbConnect(MySQL(),user="genome", db="hg19",host="genome-mysql.cse.ucsc.edu") # spojenie
vsetky_tabulky <- dbListTables(hg19) # ziskanie nazvov tabuliek v databaze hg19
length(vsetky_tabulky) # pocet vsetkych tabuliek
vsetky_tabulky[1:6] # vypis prvych 6 tabuliek
dbListFields(hg19,"acemblyPep") # stlpce v tabulke acemblyPep
dbGetQuery(hg19, "select count(*) from acemblyPep") # vypis poctu zaznamov v tabulke
#########################
ailMel1 = dbConnect(MySQL(),user="genome", db="ailMel1",host="genome-mysql.cse.ucsc.edu")
vsetky_tabulky1 <- dbListTables(ailMel1)
vsetky_tabulky1[1:4]
dbListFields(ailMel1, "all_est")
dbGetQuery(ailMel1, "select count(*) from all_est")
#nacitanie tabulky cez dbreadtable
databaza1 <- dbReadTable(ailMel1,"all_mrna")
#vyber podmnoziny dat cez query
query = dbSendQuery(ailMel1, "select * from all_mrna where misMatches = 0") # vyber dat z tabulky s podmienkou
subdata = fetch(query) # vytvorenie dat
subdata[1:6,1:4]
query <- dbSendQuery(hg19, "select * from affyU133Plus2 where misMatches between 1 and 3")
subdata1 <- fetch(query)
quantile(subdata1$misMatches)
#nacitavanie dat z WEB stranok
library(XML)
s = htmlParse(" odkaz # zadanie odkazu
tabs = readHTMLTable(s, stringsAsFactors=FALSE) # nacitanie HTML do tabulky
popes = tabs[[1]][2:6,c(2,3,5)] # vyber iba papezov (tab.1) v 2 az 6 riadku a k nim 2,3,5 stlpec
names(popes) = c("meno","narodeny", "zvoleny") # pomenovanie stlpcov
|
|
|
19
|
#DATA.TABLE
DF = data.frame(x=rnorm(9),y=rep(c("a","b","c"),each=3),z=rnorm(9))
DT = data.table(x=rnorm(9),y=rep(c("a","b","c"),each=3),z=rnorm(9)) # odvodene od data.frame, vsetky funkcie pre data.frame funkcne aj pre data.table
tables() #poskytne info o vsetkych tabulkach (data.table)
#operacie s data.table
DT[DT$x > 0] # vyber riadkov - hodnota stlpca X > 0
DT[,mean(x)] # vypis priemeru stlpca X
DT[,table(y)] # vypis v tabulke - pocty hodnot slpca Y (pocetnost)
DT[,w:=z^2] # vytvorenie noveho stlpca w, ktory ma hodnoty z^2
DT[,f:=x>0] # vytvorenie stlpca f, ktory ma hodnotu T/F, podla toho ci X je vacsie ako 0
DT[,y:={tmp = x+z; tmp^2}] # zmena stlpca a viac operacii v jednom expression
DT[,b:=sum(x),by=f] # suma hodnot X podla hodnot stlpca f
DT[,.N,by=f] # vrati pocet elementov podla faktoru f
#PRACA S DATAMI - VYBER A USPORIADANIE
X <- data.frame("var1"=sample(1:5),"var2"=sample(6:10),"var3"=sample(11:15)) #nahodne cisla
X$var2[c(1,3)] = NA
X[,1] # vyber vsetkych riadkov a 1 stlpca
X[,"var1"] # vyber vsetkych riadkov a stlpca s nazvom "var1"
X[1:2,"var2"] # vyber 1 az 2 riadka a stlpca s nazvom "var2"
X[(X$var1 <= 3 & X$var3 > 11),] # vyber riadkov, ktore splnaju dane podmienky a vsetky stlpce (& - a zaroven)
X[(X$var1 <= 3 | X$var3 > 15),] # vyber riadkov, ktore splnaju jednu z danych podmienok a vsetky slpce (| - alebo)
X[X$var2 > 8,]
X[which(X$var2 > 8),] # vyber riadkov kde var2 > 8, which - ignorovanie NA hodnot
X$d = rnorm(5) # pridanie stlpca d
Y = cbind(X,rnorm(5)) # vytvorenie tabulky/matice Y s datami X a novym slpcom
sort(X$var1) # usporiadanie premennej var1 zostupne(od najmensieho po najvacsie)
sort(X$var1,decreasing=TRUE) # usporiadanie premennej var1, vzostupne, default je FALSE
sort(X$var2,na.last=TRUE) # usporiadanie var2, berie do uvahy aj prazdne hodnoty
X[order(X$var1),] # usporiadanie celeho DF podla premennej var1
X[order(X$var1,X$var3),] # viac premenn?ch pre usporiadanie, usporiada potom podla poradia v order
#VYTVARANIE NOVYCH PREMENNYCH
s1 = seq(1,10,by = 2) #vytvori sekvenciu po dvoch (piatich prvkov)
s2 = seq(1,10,length = 3) #vytvori sekvenciu s dlzkou 3
X <- data.frame("var1"=sample(1:5),"var2"=sample(6:10),"var3"=sample(11:15))
X$c = ifelse(X$var1 > 0,TRUE,FALSE) # vytvorenie binarneho stlpca c
X$d = cut(X$var1,breaks = quantile(X$var1)) # vytvorenie kategorialnej premennej z numerickeho atributu
install.packages("Hmisc")
library(Hmisc)
X$e = cut2(X$var1,g=4) # vytvorenie kategorickej premennej cez prikaz cut2
X$f = factor(X$var1) # vytvorenie faktoru z premennej var1
yesno <- sample(c("yes","no"),size=10,replace=TRUE) # vytvorenie vektora s dlzkou 10 z hodnot yes,no
#vytvorenie faktorov
yesnofac = factor(yesno,levels=c("yes","no")) # vytvorenie faktora a zadanie levelov
relevel(yesnofac,ref="no") # zmena poradia levelov
install.packages("plyr")
library(Hmisc)
library(plyr)
X2 = mutate(X,novy = cut2(var1,g=4))
#TRANSFORMACIE
#pomocou numerickych funkcii
abs(-5) #absolutna hodnota
sqrt(9) #odmocnina
ceiling(4.45) # zaokruhli nahor
floor(4.45) # zaokruhli nadol
trunc(4.45) # zaokruhli nadol
round(4.4586325,digits = 5) #zaokruhli na 5 desatinnych miest
signif(4.4586325,digits = 5) #uz iba 5 miest
round(3.475,digits = 2)
signif(3.475,digits = 2)
cos(0.754)
sin(0.754)
log(0.754)
log2(0.754)
log10(0.754)
exp(0.754)
#funkcie na spracovanie retazcov
substr("abcdef", 2, 4) # vytvori podrerazec od 2 az po 4 znak
data <- data.frame(values=c(91, 92, 108, 104, 87, 91, 91, 97, 81, 98),
names = c("fee-", "fi", "fo-", "fum-", "foo-", "foo1234-", "123foo-","fum-", "fum-", "fum-"))
data$values[grep("foo",data$names)]
#nahradzovanie znakov
x <- c("This is a sentence about axis","A second pattern is also listed here")
sub("is", "XY", x)
gsub("is","XY",x)
#rozdelenie retazcov podla split
x <- "Split the words in a sentence."
strsplit(x, "t")
strsplit(x, "l")
strsplit(x, " ")
paste(1,2,3,4,5,sep=".") #pridanie separatora
toupper("programovanie") #zvacsenie pisma
tolower("ABCD") #zmensenie pisma
#SPAJANIE DAT
df1 = data.frame(id=sample(1:10),x=rnorm(10))
df2 = data.frame(id=sample(1:10),y=rnorm(10))
M1 = merge(df1,df2, by="id")
M2 = merge(df1,df2,by.x="id",by.y="id2")
M3 = merge(df1,df2,by.x="id",by.y="id2",all=TRUE) # prida aj nenamapovane riadky
M4 = merge(df1,df2,all=TRUE) # pokusi sa o defaultne spojenie cez vsetky spolocne atributy
library(plyr)
arrange(join(df1,df2),id) # spojenie df1 a df2 pomocou kniznice plyr a stlpca id
df3 = data.frame(id=sample(1:10),z=rnorm(10))
dfList = list(df1,df2,df3) # vytvorenie listu z prvkov df1,df2,df3
join_all(dfList) # spojenie vsetkych prvkov listu
#restruktualizacia dat - zmena struktury
mtcars$carname <- rownames(mtcars)
install.packages("reshape")
library(reshape)
# z dat mtcars vytvorime stlpce id, ktory bude mat hodnoty carname, gear a cyl a nasledne pre stlpce mpg a hp sa vytvoria hodnoty variable a value
carMelt <- melt(mtcars,id=c("carname","gear","cyl"),measure.vars=c("mpg","hp"))
head(carMelt,n=5)
# vstupom su najprv data, na kt. bol aplikovany melt, a nasleduje formula, ktora uruuje ake riadky a stlpce sa kombinuju
cylData <- cast(carMelt, cyl ~ variable)
cylData1 <- cast(carMelt, cyl ~ variable,mean)
|
|
|
20
|
#nacitanie dat
download.file(" odkaz
pollution <- read.csv("avgpm25.csv", colClasses = c("numeric", "character","factor", "numeric", "numeric"))
head(pollution) #zobrazi prvych 6 riadkov
#sumar dat
summary(pollution$pm25)
#1D
#BOXPLOT - sumar dat v grafe
boxplot(pollution$pm25, col = "blue") #boxplot atributu pm25, farba modra
abline(h=12) #boxplot s pridanou ciarou na cisle 12, h - horizontalna ciara
#histogram - pocetonosti v intervaloch - frekvencie vyskytu
hist(pollution$pm25, col= "green") #histogram pm25, zelena farba
abline(v=12, lwd=2) #pridanie ciary vertikalne na cislo 12 s hrubkou 2
abline(v = median(pollution$pm25), col = "magenta", lwd = 4) #ciara na mediane, farba ruzova s hrubkou 4
hist(pollution$pm25, col= "green", breaks= 100) #histogram pm25, breaks - rozdelenie v grafe
#rug(pollution$pm25) #zastupenie cisel - konkretne cislo v intervale
#BARPLOT - stlpcovy graf - pre stlpec region, s danou farbou a nadpisom
barplot(table(pollution$region),col="yellow", main= "Number of Counties in Each Region")
#2D extrapolacie dat - pre viacero atributov (viacero boxplotov, histogramov, ...)
#BOXPLOT pre 2 atributy
boxplot(pm25~ region, data= pollution, col= "yellow")
boxplot(pollution$pm25 ~ pollution$region, col="green")
#2 x histogram
par(mfrow= c(2,1), mar= c(4,4,2,1)) #nastavenie pre rozdelenie grafov, 2 riadky/1stlpec, mar(dole,vlavo,hore,vpravo)
par(mfcol = c(1, 2), mar = c(5, 4, 2, 1))
hist(subset(pollution, region == "east")$pm25, col= "blue") #histogram pre podmnozinu dat (subset)
hist(subset(pollution, region == "west")$pm25, col = "red")
#bodovy graf - scatterplot
with(pollution, plot(latitude, pm25)) #scatterplot ( bodovy graf) z dat pollution, atributy latitude, pm25
abline(h=12, lwd= 2, lty=2) #pridanie horizontalnej ciary, s hrubkou 2 a typ ciary 2 (prerusovany)
with(pollution, plot(latitude, pm25, col= region)) #scatterplot(bodovy graf) z dat pollution, pre latitude a pm25, rozdelenie farieb podla hodnoty region
abline(h = 12, lwd = 2, lty = 1) #lty- typ ciary 1 (plna)
legend(x="topright", legend=levels(pollution$region), col=c("red","black"), pch=1) #legenda, vpravo hore, nazvy legendy su levely v regione, farby, typ oznacenia
dev.off() #zatvorenie grafu
#BASE plot
library(datasets)
data(cars)
#SCATTERPLOT
with(cars, plot(speed,dist)) #scatterplot z dat cars, pre speed a dist plot(cars)
#data airquality
hist(airquality$Ozone)
with(airquality, plot(Wind, Ozone))
title(main="Ozone and Wind in New York City") #prida nazov
airquality=transform(airquality, Mont= factor(Month)) #transformacia stplca Month v datach airquality na faktor
boxplot(Ozone ~ Month, airquality, xlab= "Month", ylab= "Ozone (ppb)") #vytvorenie boxplotu pre stlpce Ozone, Month a oznacenie osi x,y
#default values pomocou funkcie PAR
par("lty") #typ ciary
par("col") #farba
par("pch") #typ oznacenia - symbol body
par("bg") #farba pozadia
par("mar") #pozicia- nastavenie okrajov grafov
par("mfrow") # rozdelenie grafov - 1/2/3/4
#vytvorenie grafu z dat airquality, pre stlpce Wind, Ozone, s nadpisom (main) a typom "n" (bez bodov)
with(airquality, plot(Wind, Ozone, main = "Ozone and Wind in New York City ", type = "n"))
with(subset(airquality, Month == 5), points(Wind, Ozone, col = "blue")) #vsetky rovne 5, points = vykreslovanie bodov
with(subset(airquality, Month != 5), points(Wind, Ozone, col = "red"))
legend("topright", pch = 1, col = c("blue", "red"), legend = c("May", "Other Months")) #vytvorenie legendy
model = lm(Ozone ~ Wind, airquality) # vytvorenie modelu pomocou linearnej regresie zo stlpcov Ozone, Wind
abline(model, lwd = 2) # pridanie ciary pomocou vytvoreneho modelu s hrubkou 2
par(mfrow = c(1, 3), mar = c(4, 4, 2, 1), oma = c(0, 0, 2, 0)) #okraje grafu, velkost vonkajsieho grafu
with(airquality, {
plot(Wind, Ozone, main= "Ozone and Wind")
plot(Solar.R, Ozone, main= "Ozone and Solar Radiation")
plot(Temp, Ozone, main= "Ozone and Temperature")
mtext("Ozone and Weather in New York City", outer= TRUE)})
dev.off()
#LATTICE Plot
library(lattice)
state= data.frame(state.x77, region = state.region) #vytvorenie data.frame s hodnotami state.x77 a state.region
xyplot(Population~Murder, state) #bodovy graf SCATTER plot
bwplot(Population~region,state) # BOXPLOT
stripplot(Population~region,state) #verzia boxplotu - s konkretnymi bodmi
histogram(Population~Murder,state) #HISTOGRAM
xyplot(Life.Exp ~ Income | region, data = state, layout = c(4, 1)) # xy plot so stlpcami Life.Exp a Income, rozdelenie dat podla regionu, pre data state a s rozmiestnenim 4 grafov v 1 riadku
p <- xyplot(Ozone ~ Wind, data = airquality) # vytvori graf, ale nevykresli
print(p) #vykresli vytvoreny graf
xyplot(Ozone ~ Wind, data = airquality) # Vykresli
set.seed(10)
x <- rnorm(100)
f <- rep(0:1, each = 50) # 0 a 1 po 50x
y <- x + f - f * x + rnorm(100, sd = 0.5) # vypocet y podla vzorca
f <- factor(f, labels = c("Group 1", "Group 2")) # nastavenie prem. f na faktor s hodnotami Group1 a Group2
xyplot(y ~ x | f, layout = c(2, 1))
xyplot(y ~ x | f, panel = function(x, y, ...) {
panel.xyplot(x, y, ...) # volanie default panelovu funkciu
panel.abline(h = median(y), lty = 2) # pridanie horizontalnej ciary pre median
})
# pridanie regresnej priamky
xyplot(y ~ x | f, panel = function(x, y, ...) {
panel.xyplot(x, y, ...)
panel.lmline(x, y, col = 2) # pridanie regresnej priamky
})
# GGPLOT2
library(ggplot2)
data(mpg) # nacitanie dat mpg
qplot(displ, hwy, data = mpg) # vytvorenie qplot z atributov displ (x-ovy), hwy (y-ovy) z dat mpg
qplot(displ, hwy, data = mpg, color = drv) # rozdelenie garfu farebne podla stributu drv
qplot(displ, hwy, data = mpg, geom = c("point", "smooth")) # pridanie geom. prvku - vloženie hladkej krivky
qplot(hwy, data = mpg, fill = drv) # histogram pre stlpec hwy, z dat mpg, cez faktor drv
qplot(displ, hwy, data = mpg, facets = . ~ drv) # pouzitie facets na zobrazenie viacero grafov cez faktor drv
qplot(hwy, data = mpg, facets = drv ~ .) # histogram pre hwy pre jednotlive faktory z prvkov drv
#vytvorenie PDF a ulozenie v subore
pdf(file = "myplot.pdf")
png(file = "plot.png")
xyplot(Life.Exp ~ Income | region, data = state, layout = c(4, 1))
dev.off()
#pouzitim dev.copy
with(faithful, plot(eruptions, waiting))
title(main = "Old Faithful Geyser data")
dev.copy(png, file = "geyserplot.png")
dev.off()
|
|
|
|