R Veri Setleri

Dr. Kubra Atalay Kabasakal

Kasim 2021

Veri Setleri

Veri setleri matrisler gibi iki boyutludur. Matrisler tek tur veri icerirken, veri setleri farkli veri turlerini bir arada icerebilir. R’da bir cok fonksiyonun veri setleri ile calismaktadir. Veri setleri R ortaminda data.frame() fonksiyonu ile olusturulabilir. data.frame() fonksiyonu ile ayni uzunluktaki vektorlerden bir veri seti olusturulabilir.

ad  <-  c("Ali","Elif","Su","Deniz","Aras","Berk","Can","Ece","Efe","Arda")
boy <- c(160,165,170,155,167,162,169,158,160,164)
kilo <- c(55,55,57,50,48,65,58,62,45,47)
beden <- c("S","M","S","M","S","L","M","L","S","S")
beden <- factor(beden)

(df <- data.frame(ad,boy, kilo, beden)) # 4 sutunlu df 3 farkli yapi icerir.
##       ad boy kilo beden
## 1    Ali 160   55     S
## 2   Elif 165   55     M
## 3     Su 170   57     S
## 4  Deniz 155   50     M
## 5   Aras 167   48     S
## 6   Berk 162   65     L
## 7    Can 169   58     M
## 8    Ece 158   62     L
## 9    Efe 160   45     S
## 10  Arda 164   47     S

data.frame()

Eger uzunluklari farkli olan vektorlerle veri setleri olusturulmaya calisilirsa kisa vektor, uzun vektor uzunlugunda tekrar eder.

# 4 farkli uzunlukta vektor olusturulmasi
x <- 11:14; y <- 10; M <- c(10,35); N <- 2:4
data.frame(x, y) # (4,1)
##    x  y
## 1 11 10
## 2 12 10
## 3 13 10
## 4 14 10
data.frame(x, M) # (4,2)
##    x  M
## 1 11 10
## 2 12 35
## 3 13 10
## 4 14 35

data.frame()

data.frame(x,N)  #(4,3) hata
## Error in data.frame(x, N): arguments imply differing number of rows: 4, 3
data.frame(y, M) #(1,2)
##    y  M
## 1 10 10
## 2 10 35

data.frame()

data.frame(y, N) #(1,3)
##    y N
## 1 10 2
## 2 10 3
## 3 10 4
data.frame(M, N) #(2,3)
## Error in data.frame(M, N): arguments imply differing number of rows: 2, 3

Veri Setleri

Temel pakette yer alan veri setlerinin bir listesi

data() # yeni bir pencerede acilir.

Veri setlerinin yer aldigi bir de paket bulunmaktadir.

# install.packages("datasets")
library (datasets)

Hazir veri setleri calisma ortamina data() fonksiyonu ile aktarilabilir.

data(WorldPhones) # environmete kontrol ediniz. 

Veri Setleri

hazir veri setlerini inceleme

data(cars) # enviromente ekler
iris       # enviromente eklemez!
##     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     setosa
## 7            4.6         3.4          1.4         0.3     setosa
## 8            5.0         3.4          1.5         0.2     setosa
## 9            4.4         2.9          1.4         0.2     setosa
## 10           4.9         3.1          1.5         0.1     setosa
## 11           5.4         3.7          1.5         0.2     setosa
## 12           4.8         3.4          1.6         0.2     setosa
## 13           4.8         3.0          1.4         0.1     setosa
## 14           4.3         3.0          1.1         0.1     setosa
## 15           5.8         4.0          1.2         0.2     setosa
## 16           5.7         4.4          1.5         0.4     setosa
## 17           5.4         3.9          1.3         0.4     setosa
## 18           5.1         3.5          1.4         0.3     setosa
## 19           5.7         3.8          1.7         0.3     setosa
## 20           5.1         3.8          1.5         0.3     setosa
## 21           5.4         3.4          1.7         0.2     setosa
## 22           5.1         3.7          1.5         0.4     setosa
## 23           4.6         3.6          1.0         0.2     setosa
## 24           5.1         3.3          1.7         0.5     setosa
## 25           4.8         3.4          1.9         0.2     setosa
## 26           5.0         3.0          1.6         0.2     setosa
## 27           5.0         3.4          1.6         0.4     setosa
## 28           5.2         3.5          1.5         0.2     setosa
## 29           5.2         3.4          1.4         0.2     setosa
## 30           4.7         3.2          1.6         0.2     setosa
## 31           4.8         3.1          1.6         0.2     setosa
## 32           5.4         3.4          1.5         0.4     setosa
## 33           5.2         4.1          1.5         0.1     setosa
## 34           5.5         4.2          1.4         0.2     setosa
## 35           4.9         3.1          1.5         0.2     setosa
## 36           5.0         3.2          1.2         0.2     setosa
## 37           5.5         3.5          1.3         0.2     setosa
## 38           4.9         3.6          1.4         0.1     setosa
## 39           4.4         3.0          1.3         0.2     setosa
## 40           5.1         3.4          1.5         0.2     setosa
## 41           5.0         3.5          1.3         0.3     setosa
## 42           4.5         2.3          1.3         0.3     setosa
## 43           4.4         3.2          1.3         0.2     setosa
## 44           5.0         3.5          1.6         0.6     setosa
## 45           5.1         3.8          1.9         0.4     setosa
## 46           4.8         3.0          1.4         0.3     setosa
## 47           5.1         3.8          1.6         0.2     setosa
## 48           4.6         3.2          1.4         0.2     setosa
## 49           5.3         3.7          1.5         0.2     setosa
## 50           5.0         3.3          1.4         0.2     setosa
## 51           7.0         3.2          4.7         1.4 versicolor
## 52           6.4         3.2          4.5         1.5 versicolor
## 53           6.9         3.1          4.9         1.5 versicolor
## 54           5.5         2.3          4.0         1.3 versicolor
## 55           6.5         2.8          4.6         1.5 versicolor
## 56           5.7         2.8          4.5         1.3 versicolor
## 57           6.3         3.3          4.7         1.6 versicolor
## 58           4.9         2.4          3.3         1.0 versicolor
## 59           6.6         2.9          4.6         1.3 versicolor
## 60           5.2         2.7          3.9         1.4 versicolor
## 61           5.0         2.0          3.5         1.0 versicolor
## 62           5.9         3.0          4.2         1.5 versicolor
## 63           6.0         2.2          4.0         1.0 versicolor
## 64           6.1         2.9          4.7         1.4 versicolor
## 65           5.6         2.9          3.6         1.3 versicolor
## 66           6.7         3.1          4.4         1.4 versicolor
## 67           5.6         3.0          4.5         1.5 versicolor
## 68           5.8         2.7          4.1         1.0 versicolor
## 69           6.2         2.2          4.5         1.5 versicolor
## 70           5.6         2.5          3.9         1.1 versicolor
## 71           5.9         3.2          4.8         1.8 versicolor
## 72           6.1         2.8          4.0         1.3 versicolor
## 73           6.3         2.5          4.9         1.5 versicolor
## 74           6.1         2.8          4.7         1.2 versicolor
## 75           6.4         2.9          4.3         1.3 versicolor
## 76           6.6         3.0          4.4         1.4 versicolor
## 77           6.8         2.8          4.8         1.4 versicolor
## 78           6.7         3.0          5.0         1.7 versicolor
## 79           6.0         2.9          4.5         1.5 versicolor
## 80           5.7         2.6          3.5         1.0 versicolor
## 81           5.5         2.4          3.8         1.1 versicolor
## 82           5.5         2.4          3.7         1.0 versicolor
## 83           5.8         2.7          3.9         1.2 versicolor
## 84           6.0         2.7          5.1         1.6 versicolor
## 85           5.4         3.0          4.5         1.5 versicolor
## 86           6.0         3.4          4.5         1.6 versicolor
## 87           6.7         3.1          4.7         1.5 versicolor
## 88           6.3         2.3          4.4         1.3 versicolor
## 89           5.6         3.0          4.1         1.3 versicolor
## 90           5.5         2.5          4.0         1.3 versicolor
## 91           5.5         2.6          4.4         1.2 versicolor
## 92           6.1         3.0          4.6         1.4 versicolor
## 93           5.8         2.6          4.0         1.2 versicolor
## 94           5.0         2.3          3.3         1.0 versicolor
## 95           5.6         2.7          4.2         1.3 versicolor
## 96           5.7         3.0          4.2         1.2 versicolor
## 97           5.7         2.9          4.2         1.3 versicolor
## 98           6.2         2.9          4.3         1.3 versicolor
## 99           5.1         2.5          3.0         1.1 versicolor
## 100          5.7         2.8          4.1         1.3 versicolor
## 101          6.3         3.3          6.0         2.5  virginica
## 102          5.8         2.7          5.1         1.9  virginica
## 103          7.1         3.0          5.9         2.1  virginica
## 104          6.3         2.9          5.6         1.8  virginica
## 105          6.5         3.0          5.8         2.2  virginica
## 106          7.6         3.0          6.6         2.1  virginica
## 107          4.9         2.5          4.5         1.7  virginica
## 108          7.3         2.9          6.3         1.8  virginica
## 109          6.7         2.5          5.8         1.8  virginica
## 110          7.2         3.6          6.1         2.5  virginica
## 111          6.5         3.2          5.1         2.0  virginica
## 112          6.4         2.7          5.3         1.9  virginica
## 113          6.8         3.0          5.5         2.1  virginica
## 114          5.7         2.5          5.0         2.0  virginica
## 115          5.8         2.8          5.1         2.4  virginica
## 116          6.4         3.2          5.3         2.3  virginica
## 117          6.5         3.0          5.5         1.8  virginica
## 118          7.7         3.8          6.7         2.2  virginica
## 119          7.7         2.6          6.9         2.3  virginica
## 120          6.0         2.2          5.0         1.5  virginica
## 121          6.9         3.2          5.7         2.3  virginica
## 122          5.6         2.8          4.9         2.0  virginica
## 123          7.7         2.8          6.7         2.0  virginica
## 124          6.3         2.7          4.9         1.8  virginica
## 125          6.7         3.3          5.7         2.1  virginica
## 126          7.2         3.2          6.0         1.8  virginica
## 127          6.2         2.8          4.8         1.8  virginica
## 128          6.1         3.0          4.9         1.8  virginica
## 129          6.4         2.8          5.6         2.1  virginica
## 130          7.2         3.0          5.8         1.6  virginica
## 131          7.4         2.8          6.1         1.9  virginica
## 132          7.9         3.8          6.4         2.0  virginica
## 133          6.4         2.8          5.6         2.2  virginica
## 134          6.3         2.8          5.1         1.5  virginica
## 135          6.1         2.6          5.6         1.4  virginica
## 136          7.7         3.0          6.1         2.3  virginica
## 137          6.3         3.4          5.6         2.4  virginica
## 138          6.4         3.1          5.5         1.8  virginica
## 139          6.0         3.0          4.8         1.8  virginica
## 140          6.9         3.1          5.4         2.1  virginica
## 141          6.7         3.1          5.6         2.4  virginica
## 142          6.9         3.1          5.1         2.3  virginica
## 143          5.8         2.7          5.1         1.9  virginica
## 144          6.8         3.2          5.9         2.3  virginica
## 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
## 150          5.9         3.0          5.1         1.8  virginica

Veri Setleri

Boyut sorgulamamak icin farkli fonksiyonlar kullanilabilir.

dim(cars) # satir Surun
## [1] 50  2
nrow(cars)
## [1] 50
ncol(cars)
## [1] 2

Veri Setleri

Veri setlerin ilk satirlar head(), son satirlari ise tail() fonksiyonu ile incelenebilir. head() fonksiyonu olagan olarak ilk 6 satiri yazdirir.

head(WorldPhones)
##      N.Amer Europe Asia S.Amer Oceania Africa Mid.Amer
## 1951  45939  21574 2876   1815    1646     89      555
## 1956  60423  29990 4708   2568    2366   1411      733
## 1957  64721  32510 5230   2695    2526   1546      773
## 1958  68484  35218 6662   2845    2691   1663      836
## 1959  71799  37598 6856   3000    2868   1769      911
## 1960  76036  40341 8220   3145    3054   1905     1008

Yazdirilacak satir sayisi n argumani ile ayarlanir.

head(WorldPhones,n=3)
##      N.Amer Europe Asia S.Amer Oceania Africa Mid.Amer
## 1951  45939  21574 2876   1815    1646     89      555
## 1956  60423  29990 4708   2568    2366   1411      733
## 1957  64721  32510 5230   2695    2526   1546      773

Veri Setleri

datasets paketinde yer alan veri setlerinde examples() bolumunde cesitli orneklere yer verilmistir. Ornegin example(WorldPhones)

matplot(rownames(WorldPhones), WorldPhones, type = "b", log = "y",
        xlab = "Year", ylab = "Number of telephones (1000's)")
legend("bottomright", colnames(WorldPhones), col = 1:6, lty = 1:5,
       pch = rep(21, 7))
title(main = "World phones data: log scale for response")

Veri Setleri

sleep data setinin kullanim ornekleri

head(sleep,3)
##   extra group ID
## 1   0.7     1  1
## 2  -1.6     1  2
## 3  -0.2     1  3
require(stats)
## Student's paired t-test
with(sleep,
     t.test(extra[group == 1],
            extra[group == 2], paired = TRUE))
## 
##  Paired t-test
## 
## data:  extra[group == 1] and extra[group == 2]
## t = -4.0621, df = 9, p-value = 0.002833
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -2.4598858 -0.7001142
## sample estimates:
## mean of the differences 
##                   -1.58

Veri Setleri

The sleep prolongations

sleep1 <- with(sleep, extra[group == 2] - extra[group == 1])
summary(sleep1)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    0.00    1.05    1.30    1.58    1.70    4.60
stripchart(sleep1, method = "stack", xlab = "hours",
           main = "Sleep prolongation (n = 10)")
boxplot(sleep1, horizontal = TRUE, add = TRUE,
        at = .6, pars = list(boxwex = 0.5, staplewex = 0.25))

Veri Setleri

Temel paket haric diger paketelerdeki veri setlerine data(veriseti, package="packagename") seklinde ulasilabilir.

data(CTTdata, package="CTT") 
head(CTTdata)
##   i1 i2 i3 i4 i5 i6 i7 i8 i9 i10 i11 i12 i13 i14 i15 i16 i17 i18 i19 i20
## 1  A  B  B  B  B  C  B  C  B   D   D   C   A   B   A   D   B   D   A   C
## 2  C  D  A  D  C  B  D  B  D   A   D   D   A   B   C   C   C   A   D   C
## 3  B  D  C  D  A  B  A  C  B   D   B   A   A   D   D   A   B   C   B   B
## 4  C  C  D  D  D  A  A  D  D   D   A   B   C   B   D   B   C   B   C   A
## 5  A  A  A  D  A  A  D  B  A   C   A   D   C   C   C   C   A   A   A   B
## 6  A  A  B  C  C  A  A  A  A   A   B   C   C   C   C   B   D   C   D   D

Veri Setleri

sik kullanilan veri setleri ile ilgili bir yazi:

tum veri setlerilerine ulasabilmek icin ise:

Veri Setleri

Kullanisli olmasa da excel, spps gibi veri girisi saglayan bir arayuz bulunmaktadir.

df1<- data.frame() 
df1 <- edit(df1)
# duzenlemek icin
fix(df)
# gozatmak icin 
View(df)

Veri setlerinde eleman secme

Veri setlerinde eleman secme matrislerdeki gibidir.

df[satirindeks, sutunindeks]

# df'nin birinci satir elemanlarinin secilmesi

# df'nin birinci sutun elemanlarinin secilmesi
 
# df'nin ikinci satir elemanlarinin secilmesi

# df'nin ikinci sutun elemanlarinin secilmesi

# df'nin birinci satir ucuncu sutun elemanlarinin secilmesi

# Ali, Elif ve Su isimli ogrencilerin boylarinin secilmesi
#
# Ali,Su ve Ece'nin boylarinin ve kilolarinin secilmesi

Veri setlerinde eleman secme

Veri setlerinde satir elemanlari yazdirildiginda veri seti (data.frame), sutun elemanlari yazdirildiginda ise vektor (vector) olusmaktadir.

# satir secimi
is.data.frame(df[1,])
## [1] TRUE
# sutun secimi
is.data.frame(df[,1])
## [1] FALSE

Sutun secimi veri seti (data.frame) olarak yapilmak istenirse, drop argumani FALSE degeri ile kullanilir.

df[,1,drop=FALSE]
##       ad
## 1    Ali
## 2   Elif
## 3     Su
## 4  Deniz
## 5   Aras
## 6   Berk
## 7    Can
## 8    Ece
## 9    Efe
## 10  Arda

Veri setlerinde eleman secme

# Boyu 165cm den uzun ogrencilerin bilgilerinin secilmesi


# Boyu 165 cm'den uzun ve kilosu 50 kg'nin altinda 
# olan ogrencilerin bilgilerinin secilmesi

subset()

Veri secim islemi icin subset() fonksiyonu kullanilabilir.

?subset bir fonksiyonu ilk daha kullaniyorsaniz, mutlaka yardim sayfasini inceleyin. ?airquality ornek kodlarini mutlaka calistirin, anlamlandirmaya calisin.

subset(airquality, Temp > 90, select = c(Ozone, Temp))
##     Ozone Temp
## 42     NA   93
## 43     NA   92
## 69     97   92
## 70     97   92
## 75     NA   91
## 102    NA   92
## 120    76   97
## 121   118   94
## 122    84   96
## 123    85   94
## 124    96   91
## 125    78   92
## 126    73   93
## 127    91   93

subset()

subset(airquality, Day == 1, select = -Temp)
##     Ozone Solar.R Wind Month Day
## 1      41     190  7.4     5   1
## 32     NA     286  8.6     6   1
## 62    135     269  4.1     7   1
## 93     39      83  6.9     8   1
## 124    96     167  6.9     9   1
subset(airquality, Day == 1, select = Ozone:Wind)
##     Ozone Solar.R Wind
## 1      41     190  7.4
## 32     NA     286  8.6
## 62    135     269  4.1
## 93     39      83  6.9
## 124    96     167  6.9

subset()

## df verisi sadece "S" beden 
subset(df,beden =="S")
##      ad boy kilo beden
## 1   Ali 160   55     S
## 3    Su 170   57     S
## 5  Aras 167   48     S
## 9   Efe 160   45     S
## 10 Arda 164   47     S
# 50 kg alti
subset(df,kilo <50)
##      ad boy kilo beden
## 5  Aras 167   48     S
## 9   Efe 160   45     S
## 10 Arda 164   47     S
# 50 kilo alti ve belilri sutunlar
subset(df,kilo <50,select = ad:boy)
##      ad boy
## 5  Aras 167
## 9   Efe 160
## 10 Arda 164

Eleman ekleme islemi

Veri setine yeni sutun ekleme isleme $ operatoru ile [[]] operatoru ile cbind() fonksiyonlari ile yapilabilmektedir.

df2 <- data.frame(
      S1 = sample(0:100,20),
      S2 = runif(n=20 ,min= 50 , max=70)
)

head(df2)
##   S1       S2
## 1 44 53.46004
## 2 70 57.72033
## 3 69 54.33340
## 4  0 61.79383
## 5 86 58.43147
## 6 88 58.23133
df2 <- round(df2,2)

Eleman ekleme islemi

$ operatoru ile sutun ekleme

df2$S3 <- sample(60:80,20,replace = TRUE)
head(df2)
##   S1    S2 S3
## 1 44 53.46 75
## 2 70 57.72 67
## 3 69 54.33 64
## 4  0 61.79 77
## 5 86 58.43 76
## 6 88 58.23 79

Eleman ekleme islemi

[[]] operatoru ile sutun ekleme

df2 veri setinin ilk uc sutunun rowMeans() fonksiyonu ile ortalamasinin alinarak ort isimi ile veri setine eklenmesi

df2[["ort"]] <- round(rowMeans(df2),2)
head(df2)
##   S1    S2 S3   ort
## 1 44 53.46 75 57.49
## 2 70 57.72 67 64.91
## 3 69 54.33 64 62.44
## 4  0 61.79 77 46.26
## 5 86 58.43 76 73.48
## 6 88 58.23 79 75.08

Eleman ekleme islemi

cbind() fonksiyonu ile sutun ekleme

cbind( df2, S4 = 10)
##    S1    S2 S3   ort S4
## 1  44 53.46 75 57.49 10
## 2  70 57.72 67 64.91 10
## 3  69 54.33 64 62.44 10
## 4   0 61.79 77 46.26 10
## 5  86 58.43 76 73.48 10
## 6  88 58.23 79 75.08 10
## 7  54 66.50 68 62.83 10
## 8  25 57.23 69 50.41 10
## 9  45 51.67 69 55.22 10
## 10 71 62.07 68 67.02 10
## 11 72 65.97 76 71.32 10
## 12  9 51.63 76 45.54 10
## 13 12 63.91 76 50.64 10
## 14 75 52.63 61 62.88 10
## 15 37 64.67 76 59.22 10
## 16  4 55.00 65 41.33 10
## 17 43 56.80 75 58.27 10
## 18 14 63.20 71 49.40 10
## 19 38 55.30 67 53.43 10
## 20 23 61.92 79 54.64 10

Eleman cikarma islemi

Veri setinden istenilen sutunun cikarilabilir. Bu islemi yapmak icin iki farkli yol kullanilabilir. - operatoru

head(df2,3)
##   S1    S2 S3   ort
## 1 44 53.46 75 57.49
## 2 70 57.72 67 64.91
## 3 69 54.33 64 62.44
df2 <- df2[,-4] 
head(df2,3)
##   S1    S2 S3
## 1 44 53.46 75
## 2 70 57.72 67
## 3 69 54.33 64

Eleman cikarma islemi

NULL operatoru

df2$S3 <- NULL
head(df2,3)
##   S1    S2
## 1 44 53.46
## 2 70 57.72
## 3 69 54.33

Eleman ekleme islemi

Veri setlerine degisken ekleyip, cikarabileceginiz gibi gozlem de ekleyip, cikarabilirsiniz. Veri setine iki satir ekleme

dim(df2)
## [1] 20  2
df3 <- data.frame(S1=c(50,60),S2=c(55.3,65.5))
rbind (df2,df3)
##    S1    S2
## 1  44 53.46
## 2  70 57.72
## 3  69 54.33
## 4   0 61.79
## 5  86 58.43
## 6  88 58.23
## 7  54 66.50
## 8  25 57.23
## 9  45 51.67
## 10 71 62.07
## 11 72 65.97
## 12  9 51.63
## 13 12 63.91
## 14 75 52.63
## 15 37 64.67
## 16  4 55.00
## 17 43 56.80
## 18 14 63.20
## 19 38 55.30
## 20 23 61.92
## 21 50 55.30
## 22 60 65.50

Eleman ekleme islemi

veri birlesiminde bir diger yol merge() fonksiyonudur.

## example of using 'incomparables'
x <- data.frame(k1 = c(NA,NA,3,4,5), k2 = c(1,NA,NA,4,5), data = 1:5);x
##   k1 k2 data
## 1 NA  1    1
## 2 NA NA    2
## 3  3 NA    3
## 4  4  4    4
## 5  5  5    5
y <- data.frame(k1 = c(NA,2,NA,4,5), k2 = c(NA,NA,3,4,5), data = 1:5);y
##   k1 k2 data
## 1 NA NA    1
## 2  2 NA    2
## 3 NA  3    3
## 4  4  4    4
## 5  5  5    5
merge(x, y, by = c("k1","k2")) # NA's match
##   k1 k2 data.x data.y
## 1  4  4      4      4
## 2  5  5      5      5
## 3 NA NA      2      1
merge(x, y, by = "k1") # NA's match, so 6 rows
##   k1 k2.x data.x k2.y data.y
## 1  4    4      4    4      4
## 2  5    5      5    5      5
## 3 NA    1      1   NA      1
## 4 NA    1      1    3      3
## 5 NA   NA      2   NA      1
## 6 NA   NA      2    3      3
merge(x, y, by = "k2", incomparables = NA) # 2 rows
##   k2 k1.x data.x k1.y data.y
## 1  4    4      4    4      4
## 2  5    5      5    5      5

Veri yapisi

Veri setlerinin yapisini incelemek icin str() fonksiyonundan yararlanilmaktadir.

str(df)
## 'data.frame':    10 obs. of  4 variables:
##  $ ad   : chr  "Ali" "Elif" "Su" "Deniz" ...
##  $ boy  : num  160 165 170 155 167 162 169 158 160 164
##  $ kilo : num  55 55 57 50 48 65 58 62 45 47
##  $ beden: Factor w/ 3 levels "L","M","S": 3 2 3 2 3 1 2 1 3 3

“df” veri seti 10 gozlemden , 4 degisken. Her bir degiskenin onunde $ operaturu olduguna dikkat ediniz.

stringsAsFactors argumani ile R’in karakter degiskenlerden faktor olusturmasinin onune gecilebilmektedir.

Veri yapisi

veri setinin incelenmek icin kullanilabilecek diger fonksiyon ise attributes()

attributes(df)
## $names
## [1] "ad"    "boy"   "kilo"  "beden"
## 
## $row.names
##  [1]  1  2  3  4  5  6  7  8  9 10
## 
## $class
## [1] "data.frame"

Isimlendirme

Veri setleri vektor birlestirme uzerinden yapilirsa, vektor adlari sutun ismi olarak kullanilir. Ancak bu isimler degistirilebilir. Bu islem data.frame() fonksiyonu icinde yapilabilir.

df <- data.frame(isim = ad,
                 boyolcum = boy,
                 kiloolcum= kilo, 
                 bedenolcum=beden)
df
##     isim boyolcum kiloolcum bedenolcum
## 1    Ali      160        55          S
## 2   Elif      165        55          M
## 3     Su      170        57          S
## 4  Deniz      155        50          M
## 5   Aras      167        48          S
## 6   Berk      162        65          L
## 7    Can      169        58          M
## 8    Ece      158        62          L
## 9    Efe      160        45          S
## 10  Arda      164        47          S

Isimlendirme

Veri seti isimlendirme de diger bir yol ise names() ya da colnames() fonksiyonlaridir.

df <- data.frame(ad,boy,kilo,beden)
names(df) <- c("isim","boyolcum ","kiloolcum","bedenolcum")
df
##     isim boyolcum  kiloolcum bedenolcum
## 1    Ali       160        55          S
## 2   Elif       165        55          M
## 3     Su       170        57          S
## 4  Deniz       155        50          M
## 5   Aras       167        48          S
## 6   Berk       162        65          L
## 7    Can       169        58          M
## 8    Ece       158        62          L
## 9    Efe       160        45          S
## 10  Arda       164        47          S

Betimsel istatistikler

Veri setinin tumune iliskin betimsel istatistikler

summary(cars)
##      speed           dist       
##  Min.   : 4.0   Min.   :  2.00  
##  1st Qu.:12.0   1st Qu.: 26.00  
##  Median :15.0   Median : 36.00  
##  Mean   :15.4   Mean   : 42.98  
##  3rd Qu.:19.0   3rd Qu.: 56.00  
##  Max.   :25.0   Max.   :120.00

Veri setinin tek değişkenine iliskin betimsel istatistikler

summary(cars$speed)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##     4.0    12.0    15.0    15.4    19.0    25.0

attach() fonksiyonu

attach() fonksiyonu ile bir veri setinin sutunlari sutun isimi ile enviromente eklenir. Aynı islem detach() fonksiyonu ile tersine alinabilir.

summary(women$height)   
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    58.0    61.5    65.0    65.0    68.5    72.0
attach(women)
summary(height)   # Ayni nesne isimi ile cagirilir.
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    58.0    61.5    65.0    65.0    68.5    72.0
height <- height*2.54   # Bunu yapmamaya calisin!!
                        # in the user's workspace
find("height")
## [1] ".GlobalEnv" "women"
summary(height)         # Yeni degisken
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   147.3   156.2   165.1   165.1   174.0   182.9
rm(height)
detach("women")
summary(women$height)   # unchanged
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    58.0    61.5    65.0    65.0    68.5    72.0

Veri setlerini duzenleme

Cogu durumda veriler analiz edilmeden once duzenlenmesi gerekmektedir.

# Boy vektorundeki her bir elemanin siralamadaki yerinin gosterilmesi 
boy
##  [1] 160 165 170 155 167 162 169 158 160 164
order(boy)
##  [1]  4  8  1  9  6 10  2  5  7  3

Boy siralamasini yapmak icin fonksiyonu vektorun indisi gibi kullanmak gerekmektedir.

boy[order(boy)]
##  [1] 155 158 160 160 162 164 165 167 169 170

Veri setlerini duzenleme

df veri setindeki verilerin boy degiskenine gore siralanmasi yapmak icin ayni indeks gosterme isini veri setinin icinde satir elemani olarak yapmak gerekir.

df[order(df$boy),]
##     isim boyolcum  kiloolcum bedenolcum
## 4  Deniz       155        50          M
## 8    Ece       158        62          L
## 1    Ali       160        55          S
## 9    Efe       160        45          S
## 6   Berk       162        65          L
## 10  Arda       164        47          S
## 2   Elif       165        55          M
## 5   Aras       167        48          S
## 7    Can       169        58          M
## 3     Su       170        57          S

Veri setlerini duzenleme

df veri setindeki verilerin buyukten kucuge siralanmasi

df[order(df$boy,decreasing = TRUE),]
##     isim boyolcum  kiloolcum bedenolcum
## 3     Su       170        57          S
## 7    Can       169        58          M
## 5   Aras       167        48          S
## 2   Elif       165        55          M
## 10  Arda       164        47          S
## 6   Berk       162        65          L
## 1    Ali       160        55          S
## 9    Efe       160        45          S
## 8    Ece       158        62          L
## 4  Deniz       155        50          M

Veri setlerini duzenleme

aggregate fonksiyonu ise

 aggregate(df,list(df$beden),mean) 
## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA
##   Group.1 isim boyolcum  kiloolcum bedenolcum
## 1       L   NA     160.0  63.50000         NA
## 2       M   NA     163.0  54.33333         NA
## 3       S   NA     164.2  50.40000         NA
 aggregate (df[,-c(1,4)],list(df$beden),mean)
##   Group.1 boyolcum  kiloolcum
## 1       L     160.0  63.50000
## 2       M     163.0  54.33333
## 3       S     164.2  50.40000

Veri setlerini duzenleme

Bu konu ile ilgili daha ayrintili uygulamalar Veri Duzenleme konusunda verilecektir.

BKI vektorunun uc farkli yollar farkli isimler ile veri setine eklenmesi ve ikisinin cikarilmasi ornegi

df <-data.frame(ad,boy,kilo);df
##       ad boy kilo
## 1    Ali 160   55
## 2   Elif 165   55
## 3     Su 170   57
## 4  Deniz 155   50
## 5   Aras 167   48
## 6   Berk 162   65
## 7    Can 169   58
## 8    Ece 158   62
## 9    Efe 160   45
## 10  Arda 164   47
df$BKI <- df$kilo/ (df$boy/100 * df$boy/100)
df$BKI <- round(df$kilo/ (df$boy/100 * df$boy/100),2)
df[["BKI2"]] <- round(df$kilo/ (df$boy/100 * df$boy/100),2)
df <- cbind(df, BKI3 = round(df$kilo/ (df$boy/100 * df$boy/100),2))
df 
##       ad boy kilo   BKI  BKI2  BKI3
## 1    Ali 160   55 21.48 21.48 21.48
## 2   Elif 165   55 20.20 20.20 20.20
## 3     Su 170   57 19.72 19.72 19.72
## 4  Deniz 155   50 20.81 20.81 20.81
## 5   Aras 167   48 17.21 17.21 17.21
## 6   Berk 162   65 24.77 24.77 24.77
## 7    Can 169   58 20.31 20.31 20.31
## 8    Ece 158   62 24.84 24.84 24.84
## 9    Efe 160   45 17.58 17.58 17.58
## 10  Arda 164   47 17.47 17.47 17.47
df$BKI2 <- NULL
df$BKI <- NULL

Gunun sorusu

1: Sırayla degisken adları TamSayi, OndalikSayi, Karakter, Mantiksal, Faktor olan 5 değişkenli hiçbir gözlemi olmayan bir data.frame oluşturmanızı ve bu data.framenin yapısını yazdırmanızı bekliyorum. Beklenen çıktı aşağıdaki gibi olmalıdır.

## [1] "Bos data.framenin yapısı:"
## 'data.frame':    0 obs. of  5 variables:
##  $ TamSayi    : int 
##  $ OndalikSayi: num 
##  $ Karakter   : chr 
##  $ Mantiksal  : logi 
##  $ Faktor     : Factor w/ 0 levels: 
## NULL

2: Aşağıda size verilen dört vektörden bir veri seti oluşturunuz. Oluşturduğunuz veri setinin deneme sütunundaki eksik veri sayısını hesaplayan komut yazınız.

ad = c('Su', 'Pera', 'Sule', 'Can', 'Cem', 'Name', 'Aras', 'Mete', 'Kaan', 'Pelin')
puan = c(12.5, 9, 16.5, 12, 9, 20, 14.5, 13.5, 8, 19)
deneme = c(1, NA, 2, NA, 2, NA, 1, NA, 2, 1)
bonus = c(1,0,1, 0, 0, 1, 1, 0,0, 1)
## [1] "Veri Seti:"
##       ad puan deneme bonus
## 1     Su 12.5      1     1
## 2   Pera  9.0     NA     0
## 3   Sule 16.5      2     1
## 4    Can 12.0     NA     0
## 5    Cem  9.0      2     0
## 6   Name 20.0     NA     1
## 7   Aras 14.5      1     1
## 8   Mete 13.5     NA     0
## 9   Kaan  8.0      2     0
## 10 Pelin 19.0      1     1
## [1] "Deneme sütunundaki NA sayisi:"
## [1] 4

KAYNAKCA

Atar, B., Atalay Kabasakal, K, Ünsal Özberk, E. B., Özberk, E. H. Ve Kıbrıslıoğlu Uysal, N. (2020).  R ile Veri Analizi ve Psikometri Uygulamaları, Editör, Pegem Akademi, Ankara.

Odev

Lutfen asagidaki bolumleri haftaya kadar okuyunuz.

Veri duzenleme konusunda iki paket: DataEditR , editData inceleyiniz.