Veri Setleri

R’de mevcut veri setlerini görmek için data fonksiyonunu kullandık.

data()

library(datasets)

İki farklı veri seti yükledik. Bu veri setindeki ilk 2 ve son 8 elemanını görüntülemek içn sırasıyla head ve tail fonksiyonlarını kullandık.

# WorldPhones veri setini yükleyelim
data(WorldPhones)

data("iris")
head(iris, n=2)
##   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
tail(iris, n=8)
##     Sepal.Length Sepal.Width Petal.Length Petal.Width   Species
## 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

Iris veri setindeki Species sütununun frekansını göstermek için table fonksiyonunu kullandık.

table(iris$Species)
## 
##     setosa versicolor  virginica 
##         50         50         50

Veri Çerçevelsi Oluşturma

Veri çerçevesi oluşturmak için vektörleri tanımladık. Beden vektörüne factor atamamımızın nedeni bu değişkenin kategorik değişken olduğunu tanımlamak içindi. Head fonksiyonu ile veri çerçevesinin ilk 6 hanesi görülebilir.

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)
head(df)
##      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

Alt Küme

Bir veri seti içerisinden alt küme seçmek için subset fonksiyonunu kullanıyoruz. Bu fonksiyon içerisinde alt kümenin özelliklerini tanımlamamız gerekiyor. Örneğin, sıcaklığı 90’dan fazla olacak şeklinde gibi…

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(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

Yeni Sütun Ekleme

Öncelikle yeni bir veri çerçevesi oluşturduk:

df2 <- data.frame(
  S1 = sample(0:100, 20),
  S2 = runif(n = 20, min = 50, max = 70)
)
head(df2)
##   S1       S2
## 1 54 50.21363
## 2 90 68.33877
## 3 61 56.98687
## 4 63 53.31361
## 5 20 52.11444
## 6  3 51.13784

Bu veri çerçevesine üçüncü bir sütun eklemek istedik. Bunun için 20 tane sayıyı örneklemledik ve üçüncü sütun olacak şekilde tanımladık. Buna ek olarak en son sütuna ortalamaları eklemek için yeniden bir tanımlamaya yaptık. Her yeni sütun için ya dolar ya da iki tane köşeli parantez kullandık.

df2$S3 <- sample(60:80, 20, replace = TRUE)
df2[["ort"]] <- round(rowMeans(df2), 2)
head(df2)
##   S1       S2 S3   ort
## 1 54 50.21363 62 55.40
## 2 90 68.33877 63 73.78
## 3 61 56.98687 68 62.00
## 4 63 53.31361 71 62.44
## 5 20 52.11444 75 49.04
## 6  3 51.13784 67 40.38

Yeni satır eklemek için rbind kullandık. Burada yazdığım kod Markdown’da çalışmadığı için kendim yeni bir satır eklemesi örneği denedim.

df3 <- data.frame(S1 = c(50, 60, 10), S2 = c(55.3, 65.5, 20.3))
S3 <- c(70, 60, 25.4)
df4 <- rbind (df3,S3)
## Warning in rbind(deparse.level, ...): number of columns of result, 2, is not a
## multiple of vector length 3 of arg 2
df4
##   S1   S2
## 1 50 55.3
## 2 60 65.5
## 3 10 20.3
## 4 70 60.0
dim(df4)
## [1] 4 2

Liste Oluşturma

Liste içerisinde farklı türde değişkenleri içerdiği için yaygın olatak kullacağımız form olduğunu öğrendik. Liste oluşturmak için list kodunu kullandık.

liste <- list(ad, boy, kilo)
str(liste)
## List of 3
##  $ : chr [1:10] "Ali" "Elif" "Su" "Deniz" ...
##  $ : num [1:10] 160 165 170 155 167 162 169 158 160 164
##  $ : num [1:10] 55 55 57 50 48 65 58 62 45 47

Listeye ek bir liste eklemek için list ve c fonksiyonlarını kullandık.

liste2 <- list(liste, c(1, 2, 3))
str(liste2)
## List of 2
##  $ :List of 3
##   ..$ : chr [1:10] "Ali" "Elif" "Su" "Deniz" ...
##   ..$ : num [1:10] 160 165 170 155 167 162 169 158 160 164
##   ..$ : num [1:10] 55 55 57 50 48 65 58 62 45 47
##  $ : num [1:3] 1 2 3

Listelere isim vermek için ise her bir vektöre isim tanımlaması yaptık.

# İsimli liste oluşturma
liste_isim <- list(isim = ad, boyolcum = boy, kiloolcum = kilo)
liste_isim
## $isim
##  [1] "Ali"   "Elif"  "Su"    "Deniz" "Aras"  "Berk"  "Can"   "Ece"   "Efe"  
## [10] "Arda" 
## 
## $boyolcum
##  [1] 160 165 170 155 167 162 169 158 160 164
## 
## $kiloolcum
##  [1] 55 55 57 50 48 65 58 62 45 47

Ek Paketlerin Yüklenmesi

# Gerekli paketleri yükleyelim
library(tidyverse) # Çeşitli veri manipülasyon fonksiyonları
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.5
## ✔ forcats   1.0.0     ✔ stringr   1.5.1
## ✔ ggplot2   3.5.1     ✔ tibble    3.2.1
## ✔ lubridate 1.9.3     ✔ tidyr     1.3.1
## ✔ purrr     1.0.2     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(knitr) # Tablo ve görüntü gösterimi için
library(kableExtra) # Tabloları şekillendirmek için
## 
## Attaching package: 'kableExtra'
## 
## The following object is masked from 'package:dplyr':
## 
##     group_rows
library(papaja) # APA tarzı tablolar için
## Loading required package: tinylabels
library(gt) # Şık tablolar için
library(DT) # Etkileşimli tablolar için