Verisetinin alt verisetlerine bölünmesi
Şimdi belli özelliklere sahip verilerin nasıl seçileceğine bakalım. Hatırlanacağı üzere mtcars R’ın standart verisetlerinden birisiydi.
Önce mtcars verisetindeki değişkenleri tekrar hatırlayalım:
str(mtcars)
## 'data.frame': 32 obs. of 11 variables:
## $ mpg : num 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
## $ cyl : num 6 6 4 6 8 6 8 4 4 6 ...
## $ disp: num 160 160 108 258 360 ...
## $ hp : num 110 110 93 110 175 105 245 62 95 123 ...
## $ drat: num 3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
## $ wt : num 2.62 2.88 2.32 3.21 3.44 ...
## $ qsec: num 16.5 17 18.6 19.4 17 ...
## $ vs : num 0 0 1 1 0 1 0 1 1 1 ...
## $ am : num 1 1 1 0 0 0 0 0 0 0 ...
## $ gear: num 4 4 4 3 3 3 3 4 4 4 ...
## $ carb: num 4 4 1 1 2 1 4 2 2 4 ...
Şidi motor türünü gösteren vs değişkeninde kaç farklı değer olduğuna bakalım:
unique(mtcars$vs)
## [1] 0 1
Görüldüğü üzere vs değişkeninde 0 ve 1 olmak üzere iki değer bulunmakta. unique() fonksiyonu bu şekilde değişkenlerin içerdiği her bir özgün değeri görmemizi sağlar.
vs değişkeninde 0 V tipi motor ve 1 normal motoru temsil etmektedir. Sadece V tipi motora sahip araçların verisine ulaşmak için şöyle bir yöntem kullanılabilir:
Vtype <- mtcars[mtcars$vs == 0,]
str(Vtype)
## 'data.frame': 18 obs. of 11 variables:
## $ mpg : num 21 21 18.7 14.3 16.4 17.3 15.2 10.4 10.4 14.7 ...
## $ cyl : num 6 6 8 8 8 8 8 8 8 8 ...
## $ disp: num 160 160 360 360 276 ...
## $ hp : num 110 110 175 245 180 180 180 205 215 230 ...
## $ drat: num 3.9 3.9 3.15 3.21 3.07 3.07 3.07 2.93 3 3.23 ...
## $ wt : num 2.62 2.88 3.44 3.57 4.07 ...
## $ qsec: num 16.5 17 17 15.8 17.4 ...
## $ vs : num 0 0 0 0 0 0 0 0 0 0 ...
## $ am : num 1 1 0 0 0 0 0 0 0 0 ...
## $ gear: num 4 4 3 3 3 3 3 3 3 3 ...
## $ carb: num 4 4 2 4 3 3 3 4 4 4 ...
Görüldüğü gibi mtcars verisetindeki vs değişkenine göre filtreden geçirerek sadece V tipi motorlardan oluşan Vtype isimli yeni bir veriseti (dataframe nesnesi) oluşturduk.
Filtreleme işlemini yaparken kullandığımız karşılaştırma operatörlerinin sayısını arttırıp işleme daha fazla koşul ekleyebiliriz. Mesela hem V tipi motoru olan hem de otomatik vitesli araçları listeleyebiliriz:
mtcars[mtcars$vs == 0 & mtcars$am == 0,]
## mpg cyl disp hp drat wt qsec vs am gear carb
## Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2
## Duster 360 14.3 8 360.0 245 3.21 3.570 15.84 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
## Cadillac Fleetwood 10.4 8 472.0 205 2.93 5.250 17.98 0 0 3 4
## Lincoln Continental 10.4 8 460.0 215 3.00 5.424 17.82 0 0 3 4
## Chrysler Imperial 14.7 8 440.0 230 3.23 5.345 17.42 0 0 3 4
## 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
## Camaro Z28 13.3 8 350.0 245 3.73 3.840 15.41 0 0 3 4
## Pontiac Firebird 19.2 8 400.0 175 3.08 3.845 17.05 0 0 3 2
Burada mtcars$vs == 0 ile mtcars$am == 0 parametreleri arasında yer alan “&” işareti “ve” mantıksal operatörüdür. Burada “ve” operatörü V tipi motoru hem de otomatik vitesli araçların seçimini sağlamaktadır.
Değere bağlı alt-küme seçme işleminde veya başka işlemlerde kullanılabilecek mantıksal operatörler şunlardır:
| Operatör | Kullanımı |
|---|---|
| ! | Mantıksal ‘değil’ |
| & | Elemanlara şamil mantıksal ‘ve’ |
| && | Mantıksal ‘ve’ |
| | | Elemanlara şamil mantıksal ‘veya’ |
| || | Mantıksal ‘veya’ |
İngilizce ‘element-wise’ kelimesini ‘elemanlara şamil’ olarak çevirdim. Mesela iki vektörün bütün elemanlarını teker teker karşılaştırmak için bunları kullanıyoruz.