Duomenų objektai R ir jų valdymas
Aritmetiniai veiksmai „>“ simbolis eilutės pradžioje rodo, kad galima įvesti naują komandą. Komandas galima įvesti keliose eilutėse. Į kitą eilutę pereinama paspaudus „Enter“. Tokiu atvėju naujos eilutės pradžioje rašomas simbolis „+“ (R laukia, kad pirmą eilutę papildytume sekančia). R aritmetiniai veiksmai: + suma, - skirtumas, / dalyba, * daugyba, ^ arba **kėlimas laipsniu, Veiksmų prioritetas nurodomas ().
Suskaičiuokite R konsolėje: 4.5−2.25+ 3.5−2 3− 6.9 - 3 8 Apskaičiuokite kiek 10 °C bus Farenheito laipsniais
Loginiai operatoriai Loginiai operatoriai: < mažiau <= mažiau arba lygu > daugiau >= daugiau arba lygu == lygus != nelygus !x ne x x | y x arba y x & y x ir y
Palyginkite kuris skaičius didesnis kai x lygus 1, 2, 3, 4, 5, 6, 7 : 13x-5 ar 1333*x
Objektai Norint išsaugoti skaičiavimų rezultatą jį reikia priskirti objektui. Priskyrimas atliekamas naudojant „<-“ (gali būti dvi formos„<-“, „- >“) arba „=“ simbolius. „=“ naudojamas ir kitiems tikslams todėl paprastai priskiriama su „<-“. > kintamasis1<-2 > kintamasis2<-3 > kintamasis1*kintamasis2 [1] 6 > Parašius 3 objekto pavadinimo raides, R pasiūlo pavadinimo pradžią atitinkančius objektus darbinėje aplinkoje. Paprastos struktūros objekto reikšmę galima sužinoti parašius jo pavadinimą ir paspaudus „Enter“.
Objektų pavadinimai Objektų pavadinimuose gali būti naudojamos raidės, skaičiai ir „.“ bei „_“ simboliai. Pavadinimai negali prasidėti skaičiais. Didžiosios ir mažosios raidės skiriasi. Pabandykite šiuos veiksmus: 1d<-2 d1<-2 d-1<-2 d_2<-2 d_2<-3 Parašykite konsolėje D_2 ir paspauskite „Enter“ Panaikinkite objektus iš darbinės aplinkos su rm() komanda. Pvz., rm(d1,d_2)
Apskaičiuokite temperatūrą Farenheito laipsniais Tf kai temperatūra Celsijaus laipsniais Tc yra 1, 2, 5, 8, 21.2 ir 3 . Parašykite kodą skirtą apskaičiuoti temperatūrą Farenheito laipsniais Tf kai temperatūra Celsijaus laipsniais Tc yra 1, 2, 5, 8, 21.2 ir 3 . # Temperatūra Tc Tc<- ...... # Temperatūra Tf Tf<-..........
Duomenų generavimas Paprasčiausias duomenų tipas R yra vektorius. Pvz., 2 yra vektorius su vienu nariu. Norint sudaryti vektorių iš daugiau narių gali būti naudojama c() funkcija. Sukurkite vektorių Tc sudarytą iš 1, 2, 5, 8, 21.2 ir 3. Skaičių seka kintanti kas 1 gali būti sukurta naudojant simbolį „:“. Sukurkite vektorių y sudarytą iš skaičių nuo 1 iki 5 (y<- 1:5) Sukurkite vektorių y1 sudarytą iš skaičių nuo 1.1 iki 5 (y<-1.1:5)
Apskaičiuokite temperatūrą Farenheito laipsniais Tf kai temperatūra Celsijaus laipsniais Tc yra 1, 2, 5, 8, 21.2 ir 3 (reikšmių vektorius).
Duomenų generavimas Funkcija seq(x1,xn,dx) gali sugeneruoti vektorių sudarytą iš skaičių nuo x1 iki xn, kintančių kas dx. Sugeneruokite z vektorių sudarytą iš skaičių nuo 3.5 iki 6.6 ir kintančių kas 0.2. Funkcija seq() gali būti panaudota ir kitu formatu seq(length=n, from=x1, to=xn) Funkcija rep(x,n) pakartoja objektą x n kartų. rep() gali turėti argumentus „each“ , „times“ ir „len“. Kuo skiriasi šių komandų rezultatai? rep(1:4, 2) rep(1:4, each = 2) rep(1:4, c(2,2,2,2)) rep(1:4, c(2,1,2,1)) rep(1:4, each = 2, len = 4) rep(1:4, each = 2, len = 10) rep(1:4, each = 2, times = 3)
Duomenų generavimas Atsitiktinius skaičius R galima sugeneruoti remiantis skirtingais skirstiniais (n – sugeneruotų skaičių kiekis): Gauso rnorm(n, mean=0, sd=1) Eksponentinis rexp(n, rate=1) Gama rgamma(n, shape, scale=1) Stjudento (t) rt(n, df) ir t.t. Sugeneruokite 9 atsitiktinius skaičius pagal Gauso skirstinį, kai vidurkis 10, o standartinis nuokrypis 5.
Apskaičiuokite temperatūrą Farenheito laipsniais Tf kai temperatūra Celsijaus laipsniais Tc yra 100 atsitiktinių skaičių pasiskirsčiusių pagal Gauso skirstinį, kurio vidurkis 0 °C, o standartinis nuokrypis 5 °C. Naudodami komandą plot nupieškite Tf priklausomybės nuo Tc grafiką.
Duomenų tipai Double /numeric – skaitinis Integer – sveikieji skaičiai Logical – loginiai Character – tekstiniai Factor – faktoriai (kategorijos) Dates and Times – data ir laikas Objekto duomenų tipą galima sužinoti naudojant komandas typeof() arba class().
Double /numeric Sukurkite skaitinius objektus x, y ,z. x <- 8.14 Funkcijos is.numeric() ir is.double() leidžia patikrinti ar objekto duomenų tipas skaitinis. Nustatykite: x objekto duomenų tipą, ar y yra skaitinis. Funkcija round() leidžia apvalinti reikšmes iki pasirinkto skaičiaus po kableliu. Suapvalinkite π (pi) iki 3 skaičių po kablelio.
Integer Sveiki skaičiai įvedami pridedant „L“ simbolį pvz. 5L Sukurkite sveikų skaičių vektorių x, kurį sudarytų 5, 7, 1. Skaičių paversti Integer galima funkcija as.integer() (pvz. z<-as.integer(8.75), z<-as.integer(„7.2“)) Integer ir Double gali būti naudojami aritmetiniuose veiksmuose (pvz. 5+5L arba 5 +x). Patikrinkite koks rezultato duomenų tipas.
Logical Logical gali įgyti dvi reikšmes TRUE, FALSE. x <- 9 y <- x > 10 is.double(9.876) x <- c(9,166) y <- (3 < x) & (x <= 10) x<-1:5 y<-c(1,2,8,4,5) z<-x==y
Character Character gali būti bet kokie simboliai parašyti tarp kabučių. y<-“5“ y<-as.character(53^3/28^5) x <- c("a","b","c") z<-c(x, y) Apskaičiuokite a kai y yra „5“ a<-8-y
Sekų generavimui naudokite seq() ir rep() funkcijas. (?seq(), ?rep()) Apskaičiuokite temperatūrą Farenheito laipsniais Tf kai temperatūra Celsijaus laipsniais Tc yra: 1, 2 ,3 ,1 ,2 ,3 ....(1 ,2 ,3 pakartoti 10 kartų). 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3 ,3. kas 10 laipsnių intervale nuo 100 iki -100. 17 gradacijų intervale nuo -10 iki 10. Sekų generavimui naudokite seq() ir rep() funkcijas. (?seq(), ?rep())
Faktor Faktoriai yra kategoriniai duomenys galintys įgyti apibrėžtas reikšmes. Faktoriai svarbūs kai norime apibendrinti duomenis pvz. suskaičiuoti vidutinę metų temperatūrą MS. Faktorius galima padaryti iš tekstinių arba skaitinių duomenų naudojant funkciją factor() . paskaita <- c("meteo", "hidro","hidro", "hidro", "meteo") paskaita.f<-factor(paskaita) Galimas faktorių reikšmes galima patikrinti su funkcija levels(). Kokios galimos objektų paskaita.f ir paskaita reikšmės? Faktoriu reikšmes galima pakeisti: levels(paskaita.f)<-c("h", "m") Patikrinkite objekto paskaita.f turinį?
Date Data R suformuluojama naudojant funkciją as.Date, nurodant datos formatą (d- diena, m – menuo Y ir y – 4 ir 2 skaičiais išreikšti metai). tekstas <- c("12-09-1973", "29-08-1974") z <- as.Date(tekstas, "%d-%m-%Y") Prie datos galima pridėti/atimti skaičių arba kitą datą. z2<-z+375 z-z2 Kaip R traktuoja pridedamą/atimamą skaičių? Priskirkite objektui gd savo gimimo dieną parašytą formatu 2019.11.18
Time Laikas R gali būti pateikiamas dviem formatais POSIXct (kalendoriaus laikas) ir POSIXlt (laiko dedamųjų sąrašas). Laikas suformuojamas komandomis as.POSIXct() arba as.POSIXlt(). t1 <- as.POSIXct("2003-01-23") t2 <- as.POSIXct("2003-04-23 15:34") Prie laiko galima pridėti/atimti skaičių arbą kitą laiką Kaip pasikeičia laikas prie jo pridėjus skaičių?
Date, time funkcijos Dabartinę datą ir laiką galima gauti funkcijomis Sys.Date() ir Sys.time(). Datos ir laiko komponentus galima išskirti naudojant funkciją format(). (%d -diena (0-31), %a ir %A - savaitės diena -%m mėnuo (00-12), %b ir %B mėnesio pavadinimas, %y ir %Y- metai). format(gd,"%Y") Parašykite savo gimimo data formatu "%d. %y. %b„ Parašykite savo gimimo data nurodydami metus, pilną mėnesio ir savaitės dienos pavadinimus atskirtus tarpais. Išskirkite savo gimimo datos komponentus ir apskaičiuokite jų sumą (atkreipkite dėmesį į tarpinių duomenų formatus).
Begalybė ir trūkstami duomenys Begalybė R nurodoma simboliu Inf, o trūkstami duomenys NA x <- c(1,3,4) y <- c(1,0,4) x/y Ar duomenyse yra begalybė galima nustatyti funkcija is.infinite(). x <- c(1,NA,4) Trūkstamus duomenis galima identifikuoti su funkcija is.na(). is.na(c("a", "B", NA, "NA")) Daugumoje R komandų į skaičiavimus trūkstamų duomenų galima neįtraukti naudojant argumentą na.rm=TRUE Apskaičiuokite x <-c(2, 3, 4, NA, 8, 7 ,6) vidurkį. Pasinaudokite mean pagalba.
R objektų tipai Pagrindiniai R objektų tipai: Vector – vienmačiai duomenys. Vieno tipo duomenų seka Matrix – dvimačiai vieno tipo duomenys. Array – n-mačiai vieno tipo duomenys. List – skirtingų tipų objektų sąrašai. Data frame – duomenų lentelė kurios stulpeliuose gali būti skirtingo tipo duomenys. Time series – laiko eilutės. Informaciją abie objektus ir jų struktūrą galima sužinoti su funkcija str() .
Vector Vektoriai gali būti sudaryti tik iš vieno tipo duomenų. x <- c(10, 5, 3, 6) y <- c(x,0.55, x, x) y [1] 10.0 5.0 3.0 6.0 0.55 10.0 5.0 3.0 6.0 [10] 10.0 5.0 3.0 6.0 Skaičius laužtiniuose skliaustuose parodo vektoriaus nario numerį (indeksą). Koks komandų y[5], y[2:5], x[-2] rezultatas? Kaip pasikeis x jei įvykdysime komanda x[1]<-0. Objektui z priskirkite 2 ir 5 vektoriaus y narius. Koks vektoriaus a<-c(1, „a“) duomenų tipas?
Vektor Matematinės funkcijos atliekamos su visais vektorių nariais. x <- c(10, 5, 3, 6) x*5 [1] 50 25 15 30 Matematinės funkcijos su dviem arba daugiau vektorių atliekamos paeiliui. y <- c(8, 2, 1, 4) x-y [1] 2 3 2 2 Jei vektoriai skirtingų dydžių, trumpesniojo reikšmės pakartojamos y <- c(8, 2) [1] 2 3 -5 4
Vektor Sukurkite vektorius x, kurį sudaro 1, 2, 3, 4...10 ir y, kurį sudaro 2, 3, 4. Sudauginkite šiuos vektorius. Sukurkite vektorių raides sudarytą iš 6-15 abėcėlės raidžių (Abėcėlės raidžių vektoriai integruoti į R. Jie vadinasi letters ir LETTERS) Sudarykite vektorių z iš po du kartus pakartotų skaičių nuo 0 iki 5 ir su funkcija length() nustatykite jo ilgį (narių skaičių). Sukurkite vektorių z.be.4.8 kuris būtų sudarytas iš z vektoriaus narių tačiau be 4 ir 8 nario. Sukurkite loginį vektorių itraukti<-c(TRUE, FALSE). Kokį rezultatą duos komanda z[itraukti] ir kodėl?
Vektorių reikšmių pavadinimai Vektorių reikšmėms galima suteikti pavadinimus. Pavadinimai yra vektoriaus atributas names. Pavadinimai turi būti character tipo. > names(x)<-letters[1:10] > x a b c d e f g h i j 1 2 3 4 5 6 7 8 9 10 Pavadinimus galima priskirti kuriant vektorių studentai<-c(kursas1=5,kursas2=5, kursas3=1) studentai<-c("kursas1"=5,"kursas2"=5, "kursas3"=1) Vektoriaus narius galima parinkti pagal pavadinimus studentai["kursas2“]
v<-seq(10, 510, length=rnorm(1)*260+250) Vektor Dažniausiai naudojamos vektorių funkcijos: length() – vektoriaus narių skaičius; mean() – vektoriaus narių vidurkis; sum() – vektoriaus narių suma; max(), min() – maksimali ir minimali reikšmė; sort() – vektoriaus rūšiavimas didėjimo (mažėjimo jei atributas decrease = TRUE) tvarka diff() – skirtumas tarp gretimų arba atributu lag nutolusių narių. Išbandykite funkcijas su vektoriumi: v<-seq(10, 510, length=rnorm(1)*260+250) Koks komandos length(x)<-5 kai x yra 5:30 rezultatas ir kodėl? Apskaičiuokite skaičių nuo 256 iki 457 sumą ir vidurkį.
Vektor Sukurkite vektorių z, kurio nariai būtų dienos skaičius mėnesiuose ir suteikite šiems nariams pavadinimus Sau, Vas ir t.t. Objektui z.6.9 priskirkite 6 ir 9 mėnesių dienų skaičių Pagal mėnesių pavadinimus objektui z.sp.vas priskirkite spalio ir vasario dienų skaičius. Suraskite, kurį mėnesį dienų skaičius didžiausias, mažiausias. Kiek metuose iš viso dienų? Iš objekto z panaikinkite balandžio mėnesio reikšmę (z<-z[...]) ir apskaičiuokite likusių mėnesių dienų vidurkį. Kiek metuose liko dienų (be balandžio)? Viena komanda sužinokite 1) paskutinę, 2) vidurinę z vektoriaus reikšmę (naudokite funkciją length() )
Matrix Matricos yra dvimatis vieno tipo duomenų objektas. T.y. vektorius sudalintas į eilutes ir stulpelius. Matricas galima sukurti šiais būdais: pakeičiant vektoriaus dimensijas su funkcija dim() x <- 1:8 dim(x) <- c(2,4) Naudojant funkciją matrix(data = NA, nrow = 1, ncol = 1, byrow = FALSE). x1 <- matrix(1:8,2,4) x2 <- matrix(1:8,2,4, byrow = FALSE) Sujungiant kelis vektorius arba matricas su funkcijomis cbind() ir rbind() x3 <- cbind(x1,c(9,10) x4 <- rbind(x1,c(11,12,13)) Panaudokite dim() funkciją nustatyti x1, x2, x3 ir x4 dimensijas.
Matrix Matricas galima traktuoti kaip vektorių rinkinį, todėl su jomis matematiniai veiksmai atliekami panašiai kaip ir su vektoriais, t.y. skaičiuojama su kiekvienu elementu, o trūkstami elementai pakartojami. Padauginkite matrica x <- matrix(1:16,nrow=2, byrow = FALSE) iš 5. Padauginkite matrica x iš vektoriaus 1:5. Koks rezultatas ir kodėl gavosi? Padauginkite matrica x iš x^x. Koks rezultatas ir kodėl jis toks gavosi?
Matrix Matricų dimensijų (stulpelių, eilučių) pavadinimai suteikiami rownames() ir colnames() funkcijomis. Matricai r<-rbind(letters[1:5], LETTERS[1:5]) suteikite eilučių pavadinimus rownames(r)<-c("mazosios","didziosios") Matricai r suteikite stulpeliu pavadinimus „pirma“, „antra“... „penkta“. Dimensijų pavadinimus galima suteikti ir kuriant matricas m<-matrix(1:6,ncol=3,dimnames = list(c("eilute1", "eilute2"), c("stulpelis1", "stulpelis2", "stulpelis3")))
Matrix Matricų elementai parenkami taip pat kaip ir vektorių, pagal dimensijų pavadinimus, indeksus (eilutės ir stulpelio eilės numerį) arba loginius vektorius. Pirmiausia laužtiniuose skliaustuose nurodomas eilutės numeris(iai), o po kablelio stulpelio numeris(iai). x<-matrix(1:12,3,4) x[2,2] matrix(1:12,3,4)[1,2:3] x[c(TRUE,FALSE), c(TRUE, FALSE, TRUE )] Visą eilutę parenkame po kablelio praleisdami stulpelio numerį. x[1,] Visą stulpelį parenkame praleisdami eilutes nurodantį skaičių. x[, 2]
Matrix Stulpelių ir eilučių sumos apskaičiuojamos funkcijomis colSums() ir rowSums(), o vidurkiai colMeans() ir rowMeans(). Eilučių ir stulpelių skaičius nustatomas funkcijomis nrow(), ncol(). Apskaičiuokite matricos m eilučių ir stulpelių narių sumas. Matricos transponuojamos su komanda t() Kuo skiriasi x ir t(x) matricos? Sukurkite matricą Tc sudarytą iš maksimalios (5, 15, 35, 12) ir minimalios (-20, -5, 15, 7) metų sezonų temperatūros. Suteikite dimensijoms vardus, bei pasinaudoję ankščiau parašytu kodu apskaičiuokite temperatūrą farenheitais. Apskaičiuokite vidutinę sezonų ir vidutinę, minimalią bei maksimalią metų temperatūrą. Apskaičiuokite kiekvieno sezono temperatūros amplitudę.
Matrix Koks rezultatas gausis jei nurodysime tik vieną skaičių laužtiniuose skliaustuose pvz. x[5] (x yra matrica)? Sukeiskite matricos x 1 ir 2 stulpelius (x<-x[.....]) Panaikinkite matricos x 2 eilutę (x<-x[.....]) Paverskite matricas b<-matrix(1:8,4,2) ir t(b) vektoriais (as.vector()). Kodėl gavote tokį rezultatą? Sudarykite šio rugsėjo kalendoriaus matricą, taip, kad eilutėse būtų skirtingų savaičių dienos (kitų mėnesių dienos NA). Pavadinkite stulpelius savaitės dienų pavadinimais. Matriciai kas2ant.ket priskirkite kas antros savaitės antradienio ir ketvirtadienio dienos numerį.
Arrays Duomenų masyvai yra bendrinis vieno tipo duomenų rinkinys. 1D – masyvas analogiškas vektoriui, 2D – masyvas vadinamas matrica. Masyvų dimensijų skaičius neribojamas. Kadangi matricos yra masyvai, tai daugiau dimensijų turintiems masyvams galioja tie patys parinkimo ir matematinių veiksmų atlikimo principai. Masyvus galima suformuoti nurodant vektoriaus dimensijas arba funkcija array(data = NA, dim = length(data), dimnames = NULL) x<-array(1:30,dim = c(2,3,5)) Funkcija aperm() pakeičia dimensijų tvarką (apverčia masyvą) x.apverstas<-aperm(x, c(2,1,3))
Arrays Padauginkite masyvą x iš 5. Koks rezultatas bus jei įvykdysime komandas: x[2,2,2] x[1:2,c(1,3),4] x[,,5] Sukurkite trimatį masyvą iš 120 pagal Gauso dėsnį pasiskirsčiusių atsitiktinai parinktų skaičių, kurio dimensijos 2, 3, 4 ir 5. Patikrinkite sukurto masyvo dimensijų pavadinimus su funkcija dimnames().
Time series Laiko eilutės ts ( time series) yra vektoriai sudaryti iš 2 dviejų komponentų: duomenų ir vienodu žingsniu pasiskirsčiusių laiko intervalų atitinkančių duomenis. Laiko eilutės sudaromos su funkcija ts(). t1<-ts(1:10, frequency = 4, start = c(1959, 2)) t2 <- ts(data = rnorm(100), start=c(1987), freq = 12) t3 <- ts(data = matrix(rnorm(100),ncol=2), start=c(1987,4), freq=12) Sukurkite laiko eilutę, kurioje būtų saugomi rnorm(60) duomenys matuoti kas mėnesį nuo 1975 m. kovo mėn.
Lists List – objektų sąrašas. Jį gali sudaryti bet kokio tipo objektai. Pvz. vektorius, matrica, laiko eilute, kiti sąrašai ir t.t. List dažnai yra statistinių funkcijų rezultatas. Tokius rezultatus gali sudaryti funkcijos rezultatas (skaitinis), patikimumo lygmuo (tekstinis), informacija apie tai ar iškelta hipotezė teisinga (loginis). Jei skaičiavimų rezultatas yra panašios struktūros, pavyzdžiui, temperatūros duomenys pagal skirtingus RCP scenarijus, juos patogiau saugoti sąrašuose, kurių narius sudaro skirtingų scenarijų duomenys. Taikydami šį metodą darbinėje aplinkoje turime 1 objektą o ne 4, be to su apply() funkcijomis galime atlikti viena komanda tuos pačius veiksmus su visais sąrašo objektais.
Lists List galima sukurti su funkcija list(). Sukurkite dviejų vektorių sąrašą ir susipažinkite su jo turiniu: x1 <- 1:5 x2 <- c(F,T,F,T,F) y <- list(skaiciai=x1, lyginiai=x2) y $skaiciai [1] 1 2 3 4 5 $lyginiai [1] FALSE TRUE FALSE TRUE FALSE
Lists Sąrašo objektus galima pasirinkti naudojant $ simbolį (y$skaiciai) arba dvigubus laužtinius skliaustus (y[[1]], y[[“skaiciai“]]). Pasirinkite dviem būdais antrą y sąrašo objektą. Su str() patikrinkite kuo skiriasi parinkimas su vienu ir dviem laužtiniais skliaustais. Koks rezultatas ir kodėl gausis įvykdžius komandą y[[1]][2].
List Sąrašo narių pavadinimai saugomi kaip atributas names. Patikrinkite kokios y sąrašo narių reikšmės names(y). Pakeiskite y sąrašo narių pavadinimus į angliškus. Pakeiskite tik pirmo nario pavadinimą į „weekday“.
List Papildyti sąrašą naujais objektais galima priskiriant objektą su $ arba [[]]. y[[3]]<-6:7 y$oras<-“sauleta“ Patikrinkite sąrašo y struktūrą ir objektų pavadinimus. Pašalinkite 3 sąrašo narį (y<-y[]). Sukurkite sąrašą studentai sudarytą iš jūsų vardų ir amžiaus vektorių (vardai, amzius). Suteikite sąrašo studentai nariams vardus names(). Papildykite sąrašą y sąrašu studentai. Kokią komandą naudojant $ reikia parašyti norint iš sąrašo y sužinoti studentų amžių?
Data frame Data frames – dažniausiai analizuojant duomenis pasitaikantis objekto tipas. Daugelis R funkcijų pritaikytos atlikti veiksmus su data frames. Data frames – sąrašas, kurį sudaro vienas ar keli vienodo ilgio vektoriai. Data frames – dvimatis R objektas panašus į matricą, tačiau df gali sudaryti stulpeliai kuriuose patalpinami skirtingo tipo duomenys. Pvz. df sudaryta iš MS pavadinimo (character) ir kritulių kiekio (double). Df stulpeliai vadinami variable (kintamaisiais), o eilutės observations (stebėjimais, atvėjais).
Data frame Dažniausiai df įmportuojama iš csv, xlsx, txt ar kitų šaltinių. Df galima sukurti iš vienodo ilgio vektorių naudojant data.frame() funkciją. Sukurkime df studentai, kurioje būtų kintamieji: vardas, amžius ir loginis kintamasis parodantis ar studentas iš Dzūkijos. studentas<-c(.......) amzius<-c(........) dzukas<-c(.......) studentai<-data.frame(studentas, amzius, dzukas) studentai Kuriant df kintamiesiems suteikiami vektorių vardai, tačiau juos galima nurodyti data.frame(Studentas=studentas,....).
Data frame Su komanda str() patikrinkite kas sudaro df studentai. Jei nenorime, kad R tekstą paverstų faktoriais reikia nurodyti operatorių stringsAsFactor=FALSE. Padarykite df studentai, kur pirmas stulpelis būtų tekstinio tipo. Df turi stulpelių pavadinimo atributą names() ir eilučių pavadinimo atributą row.names() . Patikrinkite kokie df studentai stulpelių ir eilučių pavadinimai. Pakeiskite stulpelių pavadinimus į angliškus atitikmenis. Pakeiskite pirmo stulpelio pavadinimą į „Name“.
Data frame Iš data frame objektus galima parinkti kaip ir iš sąrašų su $, [[]], pavadinimus arba []. Kaip ir kituose 2D R objektuose – matricose laužtiniuose skliaustuose pirmiausia nurodoma eilutės numeris, o po kablelio stulpelio numeris. Priskirkite y1 stulpelio „Name“ reikšmes naudodami $. Priskirkite y2 stulpelio 1 reikšmes naudodami [[..., ...]]. Priskirkite y3 stulpelio 1 reikšmes naudodami [..., ...]. Kuo skiriasi y1, y2 ir y3 objektų struktūra? Priskirkite y.2_5 antros-penktos eilutės reikšmes Parašykite komandą, kurios rezultatas būtų 2 ir 3 eilutėje esančios 1 ir 3 stulpelio reikšmės [..., ...].
Data frame Papildomus stulpelius (kintamuosius) įtraukiame į df kaip ir naujus narius į sąrašą. Naujo kintamojo ilgis turi būti ne ilgesnis nei df eilučių skaičius. Trumpesnis vektorius bus pakartojamas, tačiau jo ilgis turi būti eilučių skaičiaus kartotinis. Stulpelius galima prijungti prie df ir su cbind(). Naujas eilutes galime įtraukti su rbind() arba nurodant naujus eilučių indeksus. Sukurkite naują kintamąjį df studentai, kuriame būtų įrašytas amžius padaugintas iš 12. studentai$menesiai<-studentai[,2]*12
Data frame Informaciją iš dvejų arba daugiau df galima sujungti su funkcija (merge) jei yra stulpelių su tais pačiais pavadinimais ir įrašais (ne būtinai visi įrašai turi sutapti). Sukurkime dvi df: df1<-data.frame(menesiai=month.abb, eiles.numeris=1:12) df2<-data.frame(men=month.abb, ketvirtis=rep(1:4,each=3)) df2<-df2[c(TRUE,FALSE),] # pasirenkame kas antrą įrašą Sujunkime informaciją apie įrašus esančius df1 ir df2: df.m<-merge(df1,df2, , by.x = „menesiai", by.y = „men") ) df.m<-df.m[order(df.m$eiles.numeris),] # surūšiuojame įrašus
Data frame Sukurkime data frame t sudarytą iš metų, mėnesio, temperatūros nuokrypio Vilniuje, Kaune ir Klaipėdoje: t<-data.frame(metai=rep(2001:2015,each=12)) t$menuo<-rep(1:12,times=5) t$Vilnius<-rnorm(60) t$Kaunas<-rnorm(60) t$Klaipeda<-rnorm(60)
Data frame Parinkti df eilutes galima pagal jų numerį ir pavadinimą, tačiau labai dažnai reikia parinkti duomenis pagal tam tikrą kriterijų. Parinkti pagal kriterijų galima naudojant funkciją subset subset(t, metai==2011) subset(t,metai==2011 & menuo %in% c(3,8,9)) Kitas parinkimo būdas naudoja atranką pagal loginį vektorių t[t$metai==2011,] t[t$metai==2011 & t$menuo %in% c(3,8,9),] [] metodas greitesnis, subset funkcija kai kuriais atvejais neveikia.
Data frame Parinkite iš df t 2013 ir 2015 metų sausio mėnesio duomenis. Parinkite iš df t 2013 ir 2015 metų visus išskyrus balandžio mėnesio duomenis. Parinkite iš df t duomenis kai Vilniaus ir Kauno temperatūros nuokrypis neigiamas. Parinkite iš df t lyginių mėnesių duomenis kai Vilniaus ir Kauno temperatūros nuokrypis neigiamas. Parinkite iš df t duomenis kai bent vienoje MS temperatūros nuokrypis teigiamas.
Data frame Dažnai tenka skaičiuoti įvairių kategorijų vidurkius, pvz., vidutinę metų temperatūrą, kritulių sumą per mėnesį ir t.t. Df įvairias funkcijas pagal kategorijas galima pritaikyti taikant funkciją aggregate. aggregate(x, by, FUN, ...,) Apskaičiuokime vidutinį temperatūros nuokrypį Vilniaus MS skirtingais mėnesiais: aggregate(t$Vilnius, list(t$menuo), mean) Apskaičiuokite vidutinį Klaipėdos MS temperatūros nuokrypį skirtingais metais. Apskaičiuokite Kauno MS temperatūros nuokrypio sumą skirtingais metais. Apskaičiuokite Vilniaus MS temperatūros nuokrypio tik 2013 ir 2015 metais sumą.
Data frame Norint df apibendrinti pagal tolydžius duomenis juos galima pasiversti į faktorius su funkcija cut(). Apskaičiuokime vidutinį temperatūros nuokrypį Kaune ir Klaipėdoje, kai nuokrypis Vilniuje yra tarp -5 ir -4, -4 ir -3 ......4 ir 5. > t.cat<-t > t.cat$Vilnius.cat<-cut(t$Vilnius, breaks = -5:5) >aggregate(t.cat[,c("Kaunas","Klaipeda")], by=list(t.cat$Vilnius.cat), mean) Apskaičiuokite temperatūros nuokrypį Vilniuje, kai nuokrypis Klaipėdoje yra teigiamas ir kai neigiamas.
Data frame Duomenys gali būti dviem skirtingais formatais: platus (wide) ir ilgas (long).
Data frame Pakeisti duomenų formą iš ilgo į platų ir iš plataus į ilgą galima bazinie R funkcija reshape arba daugelyje paketų (reshape2, dplyr, tidyr ir t.t.) integruotų funkcijų. Funkcijos reshape privalumas yra tai, kad ji integruota į R ir nereikia įdiegti papildomų paketų. Ta pati funkcija reshape keičia duomenų formatą abejomis kryptimis (iš long į wide ir iš wide į long). Nuo norimo veiksmo priklauso kokius kintamuosius reikės nurodyti, o tai painu. reshape funkcijos rezultatai nėra tvarkingi – sukuriama papildomos, dažnai nereikalingos informacijos. t.long<-reshape(t, idvar = c("metai", "menuo"), varying=list(3:5), times = list("Vilnius","Klaipeda","Kaunas"), v.names = "dt", direction = "long") t.wide<-reshape(t.long, idvar = c("metai", "menuo"), direction = "wide")
Data frame Patogiau naudoti reshape2 paketo funkcijas melt ir dcast. Instaliuokite paketą reshape2 ir jį aktyvuokite. Atlikite šį veiksmą per Rstudijo vartotojo sąsają ir komandinę eilutę. Funkcija melt transformuoja duomenis iš plataus į ilgą formatą. Užtenka nurodyti tik df ir identifikacinius kintamuosius: t.long2<-melt(t, id=c("metai", "menuo"), value.name = "dt") Funkcija dcast transformuoja duomenis iš ilgo į platų formatą. Reikia nurodyti df ir formulę pagal kuria bus išskleidžiami duomenys. t.wide2<-dcast(t.long2, metai + menuo ~ variable) Formulės dešinėje priklausomybės simbolio „~“ pusėje nurodomas dydis pagal kurį bus sukuriami stulpeliai, o kairėje eilutės. Patikrinkite, kokį rezultatą gautume naudodami formulę variable~ metai + menuo. (priskirkite rezultatą x1) Patikrinkite, kokį rezultatą gautume naudodami formulę menuo + metai ~ variable . (priskirkite rezultatą x2)
Data frame Funkciją dcast galima naudoti apibendrinant duomenis jei nurodome ne visus identifikacinius kintamuosius ir apibendrinančią funkciją t.metai.sum<-dcast(t.long2, metai ~ variable, sum) Panašus rezultatas gautųsi naudojant komandą t.metai.sum2<-aggregate(t.long2$value, list(t.long2$metai, t.long2$variable), sum) Apskaičiuokite skirtingų metų vidutinį temperatūros nuokrypį MS naudodami t.long2 duomenis ir dcast funkciją. Apskaičiuokite skirtingų metų vidutinį temperatūros nuokrypį MS naudodami t.long2 duomenis ir aggregate funkciją. Kuo skiriasi rezultatai gauti naudojant dcast ir aggregate funkcijas? Transformuokite aggregate funkcijos rezultatą į platų formatą.
Duomenų importavimas Daugumos formatų duomenys įkeliami naudojant integruoto į R paketo utils funkcijas „read.“(read.table, read.csv. ir t.t.). Jei duomenys saugomi failuose, kur „stulpeliai“ atskirti simboliais, naudojama funkciją read.table() nurodant papildomus argumentus. read.table( file, #kelias iki duomenų arba failo pavadinimas header = FALSE, #ar pirmoje eilutėje stulpelių pavadinimai sep = "", #stulpelių atskyrimo simbolis dec = ".", #dešimtųjų atskyrimo simbolis colClasses = NA, #vektorius nurodantis stulpelių duomenų tipą stringsAsFactors = FALSE, #ar paversti tekstinius duomenis faktoriais skip = 0) #nurodoma kiek eilučių viršuje praleisti
Duomenų importavimas Jei faile yra standartinių formatų daugumą argumentų galima praleisti. Comma separated values (csv) failai priklausomai nuo sistemos lokalės gali būti atskirti , arba ;, o dešimtosios dalys . arba , (LT). Kableliais atskirtiems failams naudojama read.csv(), o kabliataškiu read.csv2() funkcijos. Tekstiniai failai atskirti tabuliacija importuojami funkcijomis read.delim() arba read.delim2(). Atsisuskite į darbinę savo projekto direktoriją sniego dangos storio duomenis iš www.hkk.gf.vu.lt/ Įkelkite į R darbinę aplinką failą sniegas.csv sniegas<-read.csv2("sniegas.csv")
Duomenų importavimas Norint įsikelti failą patalpintą ne darbinėje direktorijoje reikia nurodyti santykinį arba pilną kelią iki failo. Skirtingose OS kelias iki failo nurodomas naudojant skirtingus simbolius ( /, \), todėl rašant universalų kodą geriau sudaryti kelia iki duomenų naudojant komandą file.path . Darbinėje direktorijoje sukurkite direktoriją duomenys ir į ją įkelkite atsisiųstus sniego dangos duomenis. Suformuokite santykinį kelia iki sniego duomenų ir įkelkite juos į R darbinę aplinką > failas<-file.path(".","duomenys","sniegas.csv") > failas [1] "./duomenys/sniegas.csv„ >sniegas<-read.csv2(failas, stringsAsFactors = FALSE) ". " simbolizuoja darbinę direktoriją.
Duomenų importavimas Įvertinti ar duomenyse yra NA verčių galima funkcija is.na() . Funkcija gražina loginį vektorių arba matricą, todėl tikrinant ar df yra NA verčių patogiau susumuoti jų kiekį. > sum(is.na(sniegas)) Jei atliekant analizę atvejų su trūkstamomis vertėmis nereikia, funkcija complete.cases() galima atrinkti tik pilnus stebėjimus (eilutes). > sniegas.comp<-sniegas [complete.cases(sniegas), ] Kiek eilučių sudaro sniegas ir sniegas.comp objektus? Transformuokite df sniegas iš plataus į ilgą formatą sniegas.m<- melt(sniegas,id=c("Year","Month")) ir suskaičiuokite kiek jame yra NA reikšmių. Suskaičiuokite kiek NA reikšmių yra sniegas.m . Sukurkite df sniegas.m.comp kurioje būtų tik pilni sniegas.m. stebėjimai. Kiek ir kodėl skiriasi sniegas, sniegas.comp ir sniegas.m.comp eilučių skaičius?
Duomenų importavimas Excel failuose gali būti ne tik duomenys, bet ir papildoma informaciją: formulės, formatavimas ir t.t., todėl rekomenduojama į R duomenis importuoti išsaugojus juos csv formatu. Iš excel duomenų formatų xls ir xlsx duomenis galima įkelti naudojant kelis paketus (readxl, xlsx, XLConnect). readxl paketas yra integruotas į R studio „Import dataset“ meniu (naudojantis pirmą kartą paketas įdiegiamas). xlsx, XLConnect paketai veikia tik jei kompiuteryje yra instaliuota Java https://www.java.com/ (turi sutapti R architektura 32/64). Su šiais paketais galima duomenis eksportuoti Excel formatu.
Duomenų importavimas Importuojant duomenis per R Studio „Import dataset“ meniu kartu generuojamas kodas, kurį galima panaudoti importuojant duomenis. Atsisiųskite ir įkelkite į R MS duomenis iš www.hkk.gf.vu.lt
Duomenų eksportavimas Dvimačių duomenų eksportavimas vykdomas su komanda write.table ir jo variantais write.csv, write.csv2). write.table( x, #išsaugomas objektas file = "", #kelias iki išsaugomo failo ir failas su plėtiniu sep = " ", #stulpelių atskyrimo simbolis na = "NA", #trūkstami duomenys dec = ".", #dešimtųjų atskyrimo simbolis row.names = TRUE, #ar išsaugoti eilučių pavadinimus col.names = TRUE) #ar išsaugoti stulpelių pavadinimus Išsaugoti dvimačius duomenis Excel formatais galima naudojant funkcijas paketuose xlsx, XLConnect (reikia Java), dataframes2xls (reikia Python) ir WriteXLS (reikia Perl).
Duomenų išsaugojimas Saugant vektorių su write. funkcijomis gausime skaičių seką. Norint individualiai išsaugoti kitokio tipo duomenų objektus naudojamas R formatas .rds ir funkcija saveRDS(), o jie nuskaitomi funkcija readRDS(). > masyvas<-array(1:24,dim=c(2,3,4)) > saveRDS(masyvas,"masyvas1_24.rds") > masyvas1_24 <- readRDS("masyvas1_24.rds") Keli darbinėje aplinkoje esantys duomenų objektai išsaugomi save() funkcija .Rdata duomenų formatu, o įkeliami load() funkcija. > save(masyvas, masyvas1_24,file="masyvai.RData") > rm(masyvas,masyvas1_24) > load("masyvai.RData")
Žinių pasitikrinimas Parašykite R kodą, su kuriuo galėtume apskaičiuoti koks yra sniego dangos storio (sniegas.csv) pasiskirstymas kas 10 m pagal stoties aukštį „height“ (MS_duomenys.xlsx) skirtingais mėnesiais (be Season). Funkcijos, kurias siūloma naudoti: aggregate, complete.cases, cut, dcast, melt, merge, subset ir kt. Rezultatus išsaugokite plačiu duomenų formatu csv faile.