Kategória: Adattudomány R-ben
|
Table of Contents
|
Adatkezelés
Adatok összefoglalása
Az R-ben tipikusan rengeteg adattal dolgozunk, melynek teljes áttekintése nem könnyű feladat. Az alábbi függvények gyors, de nem részletes áttekintést tesznek lehetővé:
summary(): adattípustól függő összegzést készít.
summary(iris)Eredmény:
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
Min. :4.300 Min. :2.000 Min. :1.000 Min. :0.100 setosa :50
1st Qu.:5.100 1st Qu.:2.800 1st Qu.:1.600 1st Qu.:0.300 versicolor:50
Median :5.800 Median :3.000 Median :4.350 Median :1.300 virginica :50
Mean :5.843 Mean :3.057 Mean :3.758 Mean :1.199
3rd Qu.:6.400 3rd Qu.:3.300 3rd Qu.:5.100 3rd Qu.:1.800
Max. :7.900 Max. :4.400 Max. :6.900 Max. :2.500head(), tail(): az első ill. utolsó pár adatot tudjuk megjeleníteni, pl. egy hosszú szöveg vagy nagy adatkeret első vagy utolsó néhány sorát.
head(iris) Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosatail(iris) Sepal.Length Sepal.Width Petal.Length Petal.Width Species
145 6.7 3.3 5.7 2.5 virginica
146 6.7 3.0 5.2 2.3 virginica
147 6.3 2.5 5.0 1.9 virginica
148 6.5 3.0 5.2 2.0 virginica
149 6.2 3.4 5.4 2.3 virginica
15str(): az adatok struktúráját adja vissza.
str(iris)'data.frame': 150 obs. of 5 variables:
$ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
$ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
$ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
$ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
$ Species : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...object.size(): az objektum bájtban kifejezett méretét adja vissza.
object.size(iris)7256 bytesnames(): az elnevezéseket adja vissza, pl. az adatkeretek oszlopneveit.
names(iris)[1] "Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width" "Species"quantile(): a paraméterül átadott értékek legfontosabb kvantilisait (legkisebb elem, 25%, medián, 75%, legnagyobb elem) adja vissza.
quantile(iris$Sepal.Length) 0% 25% 50% 75% 100%
4.3 5.1 5.8 6.4 7.9table(): táblázatot készít. Ha pl. egy nagy adatkeret két oszlopát adjuk paraméterül, akkor a táblázat egy cellája azt mutatja meg, hogy adott kombinációval hány elem fordul elő. Ha egy vektort adunk át, akkor megmutatja, hogy melyik elem hányszor fordul elő.
table(iris$Species) setosa versicolor virginica
50 50 50xtabs(): szintén tartalmazás táblát készít, de komplexebb eseteket is képes kezelni.
xtabs(~Species+Sepal.Width, iris) Sepal.Width
Species 2 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 4 4.1 4.2 4.4
setosa 0 0 1 0 0 0 0 0 1 6 4 5 2 9 6 3 3 4 2 1 1 1 1
versicolor 1 2 3 3 4 3 5 6 7 8 3 3 1 1 0 0 0 0 0 0 0 0 0
virginica 0 1 0 0 4 2 4 8 2 12 4 5 3 2 0 1 0 2 0 0 0 0 0rowSums(), colSums(): soronkénti ill. oszloponkénti összegzés.
Az alábbi példáknak sok értelmük nincs (az első összeadja az összes virág mind a 4 sziromméretét a második pedig virágonként a 4 értéket), de jól illusztrálják a parancsok használatát.
colSums(iris[1:4])Sepal.Length Sepal.Width Petal.Length Petal.Width
876.5 458.6 563.7 179.9rowSums(iris[1:4]) [1] 10.2 9.5 9.4 9.4 10.2 11.4 9.7 10.1 8.9 9.6 10.8 10.0 9.3 8.5 11.2 12.0 11.0 10.3 11.5 10.7 10.7 10.7 9.4 10.6 10.3
[26] 9.8 10.4 10.4 10.2 9.7 9.7 10.7 10.9 11.3 9.7 9.6 10.5 10.0 8.9 10.2 10.1 8.4 9.1 10.7 11.2 9.5 10.7 9.4 10.7 9.9
[51] 16.3 15.6 16.4 13.1 15.4 14.3 15.9 11.6 15.4 13.2 11.5 14.6 13.2 15.1 13.4 15.6 14.6 13.6 14.4 13.1 15.7 14.2 15.2 14.8 14.9
[76] 15.4 15.8 16.4 14.9 12.8 12.8 12.6 13.6 15.4 14.4 15.5 16.0 14.3 14.0 13.3 13.7 15.1 13.6 11.6 13.8 14.1 14.1 14.7 11.7 13.9
[101] 18.1 15.5 18.1 16.6 17.5 19.3 13.6 18.3 16.8 19.4 16.8 16.3 17.4 15.2 16.1 17.2 16.8 20.4 19.5 14.7 18.1 15.3 19.2 15.7 17.8
[126] 18.2 15.6 15.8 16.9 17.6 18.2 20.1 17.0 15.7 15.7 19.1 17.7 16.8 15.6 17.5 17.8 17.4 15.5 18.2 18.2 17.2 15.7 16.7 17.3 15.8Adatok létrehozása
rep
Adott értéket ismétel, pl. a 3-at négyszer:
rep(3, 4)[1] 3 3 3 3seq
Szekvenciát hoz létre.
seq(1, 9, by=2)Kettesével számol 1-től 9-ig:
[1] 1 3 5 7 9seq(1, 9, length=3)Itt az eredmény hossza van megadva:
[1] 1 5 9ifelse
Olyan szekvenciát hoz létre, ami feltételtől függően két értéket vehet fel, pl.:
ifelse(1:9 < 5, "small", "big")[1] "small" "small" "small" "small" "big" "big" "big" "big" "big"cut
Kategorikus változókat hoz létre. Az egyes elemeket átalakítja a tartalmazó intervallumokká.
cut(1:10, breaks=c(0, 3, 7, 10)) [1] (0,3] (0,3] (0,3] (3,7] (3,7] (3,7] (3,7] (7,10] (7,10] (7,10]
Levels: (0,3] (3,7] (7,10]Véletlen szám generálás
rnorm
Standard normális eloszlású véletlen számok generálása:
rnorm(5)[1] -0.2581831 0.1462528 -2.3366610 -0.8379243 -0.5792900Megadható a várható érték és a szórás:
rnorm(5, 100, 15)[1] 114.44141 113.98491 123.41828 82.18646 109.37863runif
Folytonos egyenletes eloszlású véletlen szám a [0, 1] intervallumon:
runif(5)[1] 0.2311912 0.6131784 0.7384209 0.5221001 0.1427425A végpontok megadhatóak:
runif(5, 0, 100)[1] 67.80824 41.84025 39.86583 52.41557 85.44915rpois
Poisson eloszlású véletlen szám generálása (lambda = 2):
rpois(5, 2)[1] 2 0 2 4 3Számos egyéb eloszlású véletlen szám generálható.
sample
Véletlen permutáció:
sample(5)[1] 5 3 2 1 4Értékek véletlen választása adott listából:
sample(1:100, 5)[1] 19 27 42 94 70Adatfeldolgozás
Ebben a fejezetben alap lekérdezéseket és átalakításokat hajtunk végre adatkereten natív R-ben, majd megnézzük a dplyr csomag nyújtotta lehetőségeket.
Adatfeldolgozás natív R-ben
Oszlopok kiválasztása
Az oszlopneveket vektorként kell átadni:
mtcars[, c("mpg", "hp", "cyl")]Eredmény:
mpg hp cyl
Mazda RX4 21.0 110 6
Mazda RX4 Wag 21.0 110 6
Datsun 710 22.8 93 4
Hornet 4 Drive 21.4 110 6
Hornet Sportabout 18.7 175 8
Valiant 18.1 105 6
Duster 360 14.3 245 8
Merc 240D 24.4 62 4
Merc 230 22.8 95 4
Merc 280 19.2 123 6
Merc 280C 17.8 123 6
Merc 450SE 16.4 180 8
Merc 450SL 17.3 180 8
Merc 450SLC 15.2 180 8
Cadillac Fleetwood 10.4 205 8
Lincoln Continental 10.4 215 8
Chrysler Imperial 14.7 230 8
Fiat 128 32.4 66 4
Honda Civic 30.4 52 4
Toyota Corolla 33.9 65 4
Toyota Corona 21.5 97 4
Dodge Challenger 15.5 150 8
AMC Javelin 15.2 150 8
Camaro Z28 13.3 245 8
Pontiac Firebird 19.2 175 8
Fiat X1-9 27.3 66 4
Porsche 914-2 26.0 91 4
Lotus Europa 30.4 113 4
Ford Pantera L 15.8 264 8
Ferrari Dino 19.7 175 6
Maserati Bora 15.0 335 8
Volvo 142E 21.4 109 4A [] eredményének típusa mindig megegyezik az eredetiével. Ezzel tetszőleges számú elemet kiválaszthatunk, pl. v[5], v[c(2, 4:7)]
Ugyanakkor a [[]] segítségével listák és adatkeretek elemeit lehet megcímezni. Az eredményének a típusa nem feltétlenül egyezik meg az eredetiével, és ezzel csak egy elemet választhatunk ki. Példa: l[[2]]
Szűrés
A szűrés szintaxisát az alábbi példa illusztrálja.
mtcars[mtcars$mpg > 20 & mtcars$cyl == 6, ]Figyeljük meg az egyszeres logikai és műveletet (&). Ez úgy működik, hogy a mtcars$mpg > 20 létrehoz egy annyi elemből álló logikai értékeket tartalmazó listát, ahány eleme van az adatkeretnek, hasonlóan a mtcars$cyl == 6, majd elemenként történik az és kapcsolat. Ez a megközelítés általában jellemzi az adatkereteket, nemcsak R-ben. Az eredmény:
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1Rendezés
Az order() segítéségével lehet megadni a sorrendet:
mtcars[order(-mtcars$hp), ]Eredmény:
mpg cyl disp hp drat wt qsec vs am gear carb
Maserati Bora 15.0 8 301.0 335 3.54 3.570 14.60 0 1 5 8
Ford Pantera L 15.8 8 351.0 264 4.22 3.170 14.50 0 1 5 4
Duster 360 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 4
Camaro Z28 13.3 8 350.0 245 3.73 3.840 15.41 0 0 3 4
Chrysler Imperial 14.7 8 440.0 230 3.23 5.345 17.42 0 0 3 4
Lincoln Continental 10.4 8 460.0 215 3.00 5.424 17.82 0 0 3 4
Cadillac Fleetwood 10.4 8 472.0 205 2.93 5.250 17.98 0 0 3 4
Merc 450SE 16.4 8 275.8 180 3.07 4.070 17.40 0 0 3 3
Merc 450SL 17.3 8 275.8 180 3.07 3.730 17.60 0 0 3 3
Merc 450SLC 15.2 8 275.8 180 3.07 3.780 18.00 0 0 3 3
Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2
Pontiac Firebird 19.2 8 400.0 175 3.08 3.845 17.05 0 0 3 2
Ferrari Dino 19.7 6 145.0 175 3.62 2.770 15.50 0 1 5 6
Dodge Challenger 15.5 8 318.0 150 2.76 3.520 16.87 0 0 3 2
AMC Javelin 15.2 8 304.0 150 3.15 3.435 17.30 0 0 3 2
Merc 280 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4
Merc 280C 17.8 6 167.6 123 3.92 3.440 18.90 1 0 4 4
Lotus Europa 30.4 4 95.1 113 3.77 1.513 16.90 1 1 5 2
Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4
Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1
Volvo 142E 21.4 4 121.0 109 4.11 2.780 18.60 1 1 4 2
Valiant 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1
Toyota Corona 21.5 4 120.1 97 3.70 2.465 20.01 1 0 3 1
Merc 230 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2
Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1
Porsche 914-2 26.0 4 120.3 91 4.43 2.140 16.70 0 1 5 2
Fiat 128 32.4 4 78.7 66 4.08 2.200 19.47 1 1 4 1
Fiat X1-9 27.3 4 79.0 66 4.08 1.935 18.90 1 1 4 1
Toyota Corolla 33.9 4 71.1 65 4.22 1.835 19.90 1 1 4 1
Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2
Honda Civic 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2Új oszlop hozzáadása
Oszlopot az alábbi módon tudunk hozzáadni:
mtcars$kilo_per_liter <- mtcars$mpg * 0.425
head(mtcars)Ez módosítja az eredeti adatkeretet:
mpg cyl disp hp drat wt qsec vs am gear carb kilo_per_liter
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4 8.9250
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4 8.9250
Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1 9.6900
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1 9.0950
Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2 7.9475
Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1 7.6925Itt érdemes megemlíteni még a cbind() és az rbind() parancsokat, amelyekkel oszlopokat ill. sorokat tudunk hozzáadni.
Összesítés
Összesítési műveleteket az adatokon és új adatkeretet az alábbi szintaxissal tudunk létrehozni:
data.frame(
atlag_hp = mean(mtcars$hp),
median_mpg = median(mtcars$mpg)
)Eredmény:
atlag_hp median_mpg
1 146.6875 19.2Műveletek összevonása
Kompakt ódon tudunk műveleteket összevonni:
mean(mtcars[mtcars$cyl == 6 & mtcars$mpg > 20, ]$hp)[1] 110Adatfeldolgozás a dplyr csomag segítségével
Ez a csomag további adatelemzést és -feldolgozást tesz lehetővé, sajátos szintaxissal. Megnézzük a fenti műveleteket ebben a rendszerben is.
Telepítés
Ez nem része az alap telepítésnek, tehát a szokásos módon fel kell telepíteni, és használat előtt be kell tölteni:
install.packages("dplyr")
library(dplyr)Oszlopok kiválasztása
A select() parancs segítségével tudunk oszlopot kiválasztani, pl.:
mtcars %>% select(mpg, hp, cyl)Figyeljük meg a %>% szintaxist, ami jellemzi a dplyr csomagot. Az eredmény:
mpg hp cyl
Mazda RX4 21.0 110 6
Mazda RX4 Wag 21.0 110 6
Datsun 710 22.8 93 4
Hornet 4 Drive 21.4 110 6
Hornet Sportabout 18.7 175 8
Valiant 18.1 105 6
Duster 360 14.3 245 8
Merc 240D 24.4 62 4
Merc 230 22.8 95 4
Merc 280 19.2 123 6
Merc 280C 17.8 123 6
Merc 450SE 16.4 180 8
Merc 450SL 17.3 180 8
Merc 450SLC 15.2 180 8
Cadillac Fleetwood 10.4 205 8
Lincoln Continental 10.4 215 8
Chrysler Imperial 14.7 230 8
Fiat 128 32.4 66 4
Honda Civic 30.4 52 4
Toyota Corolla 33.9 65 4
Toyota Corona 21.5 97 4
Dodge Challenger 15.5 150 8
AMC Javelin 15.2 150 8
Camaro Z28 13.3 245 8
Pontiac Firebird 19.2 175 8
Fiat X1-9 27.3 66 4
Porsche 914-2 26.0 91 4
Lotus Europa 30.4 113 4
Ford Pantera L 15.8 264 8
Ferrari Dino 19.7 175 6
Maserati Bora 15.0 335 8
Volvo 142E 21.4 109 4Szűrés
A filter() parancs segítéségével tudunk adott értékekre szűrni, pl.:
mtcars %>% filter(mpg > 20, cyl == 6)Eredmény:
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1Új oszlop hozzáadása
A mutate() parancs segítéségével tudunk módosítani az adaton, pl. új oszlopot hozzáadni:
mtcars %>% mutate(kilo_per_liter = mpg * 0.425)Megjegyzés: az eredeti adat nem változik, a módosítás tehát egy új adathalmazon jelentkezik. Eredmény:
mpg cyl disp hp drat wt qsec vs am gear carb kilo_per_liter
Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4 8.9250
Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4 8.9250
Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1 9.6900
Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1 9.0950
Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2 7.9475
Valiant 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1 7.6925
Duster 360 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 4 6.0775
Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2 10.3700
Merc 230 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2 9.6900
Merc 280 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4 8.1600
Merc 280C 17.8 6 167.6 123 3.92 3.440 18.90 1 0 4 4 7.5650
Merc 450SE 16.4 8 275.8 180 3.07 4.070 17.40 0 0 3 3 6.9700
Merc 450SL 17.3 8 275.8 180 3.07 3.730 17.60 0 0 3 3 7.3525
Merc 450SLC 15.2 8 275.8 180 3.07 3.780 18.00 0 0 3 3 6.4600
Cadillac Fleetwood 10.4 8 472.0 205 2.93 5.250 17.98 0 0 3 4 4.4200
Lincoln Continental 10.4 8 460.0 215 3.00 5.424 17.82 0 0 3 4 4.4200
Chrysler Imperial 14.7 8 440.0 230 3.23 5.345 17.42 0 0 3 4 6.2475
Fiat 128 32.4 4 78.7 66 4.08 2.200 19.47 1 1 4 1 13.7700
Honda Civic 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2 12.9200
Toyota Corolla 33.9 4 71.1 65 4.22 1.835 19.90 1 1 4 1 14.4075
Toyota Corona 21.5 4 120.1 97 3.70 2.465 20.01 1 0 3 1 9.1375
Dodge Challenger 15.5 8 318.0 150 2.76 3.520 16.87 0 0 3 2 6.5875
AMC Javelin 15.2 8 304.0 150 3.15 3.435 17.30 0 0 3 2 6.4600
Camaro Z28 13.3 8 350.0 245 3.73 3.840 15.41 0 0 3 4 5.6525
Pontiac Firebird 19.2 8 400.0 175 3.08 3.845 17.05 0 0 3 2 8.1600
Fiat X1-9 27.3 4 79.0 66 4.08 1.935 18.90 1 1 4 1 11.6025
Porsche 914-2 26.0 4 120.3 91 4.43 2.140 16.70 0 1 5 2 11.0500
Lotus Europa 30.4 4 95.1 113 3.77 1.513 16.90 1 1 5 2 12.9200
Ford Pantera L 15.8 8 351.0 264 4.22 3.170 14.50 0 1 5 4 6.7150
Ferrari Dino 19.7 6 145.0 175 3.62 2.770 15.50 0 1 5 6 8.3725
Maserati Bora 15.0 8 301.0 335 3.54 3.570 14.60 0 1 5 8 6.3750
Volvo 142E 21.4 4 121.0 109 4.11 2.780 18.60 1 1 4 2 9.0950Rendezés
Az arange() parancs teszi lehetővé a rendezést:
mtcars %>% arrange(desc(hp))Eredmény:
mpg cyl disp hp drat wt qsec vs am gear carb
Maserati Bora 15.0 8 301.0 335 3.54 3.570 14.60 0 1 5 8
Ford Pantera L 15.8 8 351.0 264 4.22 3.170 14.50 0 1 5 4
Duster 360 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 4
Camaro Z28 13.3 8 350.0 245 3.73 3.840 15.41 0 0 3 4
Chrysler Imperial 14.7 8 440.0 230 3.23 5.345 17.42 0 0 3 4
Lincoln Continental 10.4 8 460.0 215 3.00 5.424 17.82 0 0 3 4
Cadillac Fleetwood 10.4 8 472.0 205 2.93 5.250 17.98 0 0 3 4
Merc 450SE 16.4 8 275.8 180 3.07 4.070 17.40 0 0 3 3
Merc 450SL 17.3 8 275.8 180 3.07 3.730 17.60 0 0 3 3
Merc 450SLC 15.2 8 275.8 180 3.07 3.780 18.00 0 0 3 3
Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2
Pontiac Firebird 19.2 8 400.0 175 3.08 3.845 17.05 0 0 3 2
Ferrari Dino 19.7 6 145.0 175 3.62 2.770 15.50 0 1 5 6
Dodge Challenger 15.5 8 318.0 150 2.76 3.520 16.87 0 0 3 2
AMC Javelin 15.2 8 304.0 150 3.15 3.435 17.30 0 0 3 2
Merc 280 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4
Merc 280C 17.8 6 167.6 123 3.92 3.440 18.90 1 0 4 4
Lotus Europa 30.4 4 95.1 113 3.77 1.513 16.90 1 1 5 2
Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4
Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1
Volvo 142E 21.4 4 121.0 109 4.11 2.780 18.60 1 1 4 2
Valiant 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1
Toyota Corona 21.5 4 120.1 97 3.70 2.465 20.01 1 0 3 1
Merc 230 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2
Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1
Porsche 914-2 26.0 4 120.3 91 4.43 2.140 16.70 0 1 5 2
Fiat 128 32.4 4 78.7 66 4.08 2.200 19.47 1 1 4 1
Fiat X1-9 27.3 4 79.0 66 4.08 1.935 18.90 1 1 4 1
Toyota Corolla 33.9 4 71.1 65 4.22 1.835 19.90 1 1 4 1
Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2
Honda Civic 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2Összesítés
A summarize() összesítést végez, pl. átlag számolást. Példa:
mtcars %>% summarise(atlag_hp = mean(hp), median_mpg = median(mpg))Eredmény:
atlag_hp median_mpg
1 146.6875 19.2Műveletek összevonása
A dplyr egyik ereje a láncolásban van: a parancsok egymás után fűzhetőek, ahogy a következő példán is látható:
mtcars %>% filter(cyl == 6, mpg > 20) %>% summarise(atlag_hp = mean(hp))Eredmény:
atlag_hp
1 110Dátumkezelés
Az időkezelés sehol sem egyszerű, és nincs ez másképp az R-ben sem.
Ma és most
Az aktuális napot a következőképpen tudjuk lekérdezni:
today <- Sys.Date()
today[1] "2025-08-24"Az aktuális időpontot pedig a következőképpen
now <- Sys.time()
now[1] "2025-08-24 10:41:15 CEST"Dátum és időpont
Az R különbséget tesz dátum és időpont között. Dátumot a következőképpen tudunk létrehozni:
as.Date("2025-08-24")[1] "2025-08-24"Az időpont ennél bonyolultabb, azt külön nézzük meg.
Naptár és Unix rendszeridő
Alapvetően kétféle megközelítést alkalmazhatunk az időpont kezelésénél.
1. Naptár megközelítést, ami tartalmazza az évet, hónapot, napot, órát, percet, másodpercet, időzónát stb. Átalakítása a as.POSIXlt() függvénnyel történik. Ezáltal lehetővé válik az egyes komponensek lekérdezése, mint pl. az, hogy az adott időpont hányadik nap az adott évben:
nowLocalTime <- as.POSIXlt(now)
nowLocalTime$yday[1] 2352. Unix rendszeróra megközelítés, ami az 1970.01.01 00:00:00 UTC óta eltelt másodperceket tartalmazza, tehát egy globális, időzóna nélküli abszolút időt. Használata:
unclass(as.POSIXct(now))[1] 1756024876Itt tehát nincs év, hónap, nap, időzóna stb., hanem egy abszolút időpont.
Formázás
Ha másképp szeretnénk formázni az időpontot, azt a format() függvény seg.tségével tudjuk megtenni, pl.:
format(now, "%Y/%m/%d %H:%M:%S %z")[1] "2025/08/24 10:41:15 +0200"Fordítva, egy sajátosan formázott stringből a strptime() segítségével tudjuk kinyerni az időpontot:
strptime("2025/03/30 04:00:00", "%Y/%m/%d %H:%M:%S")[1] "2025-03-30 04:00:00 CEST"Műveletek
Az összehasonlító műveletekkel össze tudunk hasonlítani dátumokat ill. időpontokat, pl.:
as.Date("2025-08-24") < as.Date("2025-08-25")[1] TRUEA kivonás művelet képezhetjük két dátum ill. időpont különbségét. Ez jól működik a szökőnapnál:
as.Date("2024-03-01") - as.Date("2024-02-28")Time difference of 2 daysvalamint a nyári időszámításra történő átállásnál is:
strptime("2025-03-30 04:00:00", "%Y-%m-%d %H:%M:%S") - strptime("2025-03-30 01:00:00", "%Y-%m-%d %H:%M:%S")Time difference of 2 hoursSzámokat is tudunk hozzáadni ill. kivonni. Dátum esetén napokat, míg időpont esetén másodperceket ad hozzá ill. von ki belőle.
today[1] "2025-08-24"today + 1[1] "2025-08-25"today - 1[1] "2025-08-23"now[1] "2025-08-24 10:41:15 CEST"now + 60[1] "2025-08-24 10:42:15 CEST"now - 60[1] "2025-08-24 10:40:15 CEST"Adatok írása-olvasása
Fájl műveletek
- getwd(), setwd("könyvtárnév") - a munkakönyvtár lekérdezése, beállítása
- file.exists("könyvtárnév") - annak ellenőrzése, hogy létezik-e a fájl vagy könyvtár
- dir.create("könyvtárnév") - könyvtár létrehozása
- list.files("könyvtárnév") - adott könyvtárban található fájlok kilistázása
- download.file("fájlnév") - fájl letöltése az internetről
- readLines() - sorok beolvasása szövegből
- Lehetőségek: file(), gzfle(), bzfile().
- Példa: con <- file("filename.txt", "r"); readLines(5); close(con)
- Fájl letöltése internetről: url("http://…")
Szerializálás
- Egy objektum szerializálása: dput(), melynek a párja dget(). Pl. dput(fruits, file="fruits.R"), majd fruits2 <- dget("fruits.R").
- Több objektum szerializálása: dump(), melynek a párja source(). A szintaxis hasonló mint a fenti.
Táblázatos adatok beolvasása
Parancs: read.table(), pl. fruits <- read.table("table.txt"). Alapértelmezésben fejléc nélküli, vesszővel elválasztott fájlként olvassa be . Az eredmény adatkeret lesz, a típusokat megpróbálja kitalálni. Paraméterekkel sok minden beállítható. Hasonló függvény a read.csv(), ami a read.table() függvényt hívja meg olyan paraméterekkel, hogy az megfeleljen a csv fájltípusnak (pl. fejléccel).
Excel:
- library(readxl)
- read_excel("fájlnév.xlsx")
XML
- library(XML)
- doc <- xmlTreeParse("fájlnév.xml") - XML beolvasása
- node <- xmlRoot(doc) - a gyökér node lekérése
- names(node) - egy node alatti node-ok nevei
- node[[1]] - egy node alatti első elem lekérdezése
- xmlSApply(node, xmlValue) - a fájl részeinek lekérdezése
- xpathSApply(node, "xPathKifejezés", xmlValue) - XPath lekérdezés
JSON
- library(jsonlite)
- jsonData <- fromJSON("uri") - beolvasás
- toJson(jsonData) - kiírás
- names(jsonData) - mező nevek
- jsonData$name - egy adott mező elérése
Adattáblák
Hasonló mint az adat keret (data frame), viszont sokkal több lehetőséget nyújt.
* library(data.table)
* dt <- data.table(…)
Adatbázisok
MySQL:
- library(RMySQL)
- dbConn <- dbConnect(MySQL(), user="username", password="password" host="hostname", port="port", dbname="dbname")
- dbListTables(dbConn)
- dbListFields(dbConn, "tablename")
- dbReadTable(dbConn, "tablename")
- fetch(dbSendQuery(dbConn, "SELECT …"))
- dbDisconnect(dbConn)
További adatbázisok is használhatóak:
- library(RPostgreSQL)
- library(RODBC) (PostgreQL, MySQL, Microsoft Access, SQLite)
- library(RMongo)
HDF5
Ez a formátum nagy adathalmazok tárolására szolgál.
- library(rhdf5)
- h5read(…)
- h5write(…)
API
- library(httr)
- GET("URL")
Képek
A különböző adatformátumokhoz találunk megfelelő könyvtárat:
- library(jpeg)
- library(readbitmap)
- library(png)
GIS
Térképes adatok olvasására használatos csomagok:
*library(rgdal)
- library(rgeos)
- library(raster)
Zene
Zenefájlok olvasása:
- library(tuneR)
- library(seewave)






