Verisetinin alt verisetlerine bölünmesi

Share on:

Ş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.