Last chance! 50% off DataCamp Premium
Sale ends in

Girişe başlamadan ve R'deki çeşitli veri türlerini öğrenmeden önce, R ortamını Terminal ve Jupyter Notebook üzerinde hızlıca kuralım.
Aşağıdaki komut Mac işletim sistemi içindir ve R'yi terminalinize kuracaktır.
brew install r --build-from-source
Kurulumun başarılı olduğunu doğrulamak için terminalde büyük harfle R yazın; aşağıda gösterildiği gibi bir R oturumuna gireceksiniz.

Diğer işletim sistemlerine kurulum için bu eğitimi inceleyebilirsiniz.
Şimdi R programlama dilini jupyter notebook'a çekirdek (kernel) olarak ekleyelim. Sisteminizde jupyter notebook'un önceden kurulu olduğundan emin olun.
Terminalinize gidin, bir R oturumu açın ve jupyter notebook'a R çekirdeğini ekleyecek aşağıdaki iki komutu girin.
install.packages('IRkernel')
IRkernel::installspec()
Yukarıdaki iki komut başarıyla çalıştıktan sonra terminalden jupyter'ı başlatın ve aşağıda gösterildiği gibi R çekirdeği ile bir notebook açın:

Artık jupyter notebook üzerinde ilk R kodunuzu yazmaya hazırsınız.
R'den en iyi şekilde yararlanmak için, R'de var olan çeşitli veri türlerini ve veri yapılarının nasıl çalıştığını bilmek ve anlamak çok önemlidir. Bu yapılar neredeyse tüm problemlerde kilit rol oynar; özellikle de veriye dayalı makine öğrenimi problemleri üzerinde çalışırken.
Bir programlama dilinde, genellikle tamsayı, karakter, kayan nokta, mantıksal (boolean) vb. bilgileri saklamak için değişkenlere ihtiyaç duyarız. Bir değişkenin type'ı, tuttuğu bilgi türüne göre belirlenir. Eğer bir tamsayı atanmışsa, değişkenin veri türü int olur. Değişkenler, değerlerin saklandığı ayrılmış bellek konumlarıdır. Bir değişken oluşturur oluşturmaz, onun için bir miktar bellek ayrılır.
Bir değişkenin veri türüne bağlı olarak, işletim sistemi belirli miktarda bellek ayırır. Örneğin R programlamada, bir tamsayı tutan değişken 4 bayt, bir karakter ise 1 bayt bellek ayırır.
C, C++ ve Java gibi programlama dillerinde değişkenler veri türüyle bildirilir; ancak Python ve R'de değişkenler birer nesnedir. Nesneler, öznitelikleri ve bu özniteliklere uygulanan bazı yöntemleri olan veri yapılarıdır.
Bu eğitimde ele alınacak çeşitli R-nesneleri veya veri yapıları şunlardır:
Vektörler
Listeler
Matrisler
Diziler
Faktörler
Önce R-nesnelerinin üzerine inşa edildiği bazı temel veri türlerini anlayalım: Sayısal (Numeric), Tamsayı (Integer), Karakter (Character), Faktör (Factor) ve Mantıksal (Logical).
num <- 1.2
print(num)
[1] 1.2
a'nın veri türünü class() anahtar sözcüğüyle kontrol edebilirsiniz.
class(num)
'numeric'
as.integer() kullanır ve değişkeni argüman olarak geçirirsiniz.int <- as.integer(2.2)
print(int)
[1] 2
class(int)
'integer'
char <- "datacamp"
print(char)
[1] "datacamp"
class(char)
'character'
char <- "12345"
print(char)
[1] "12345"
class(char)
'character'
log_true <- TRUE
print(log_true)
[1] TRUE
class(log_true)
'logical'
log_false <- FALSE
print(log_false)
[1] FALSE
class(log_false)
'logical'
Bunu yapmak için, tüm öğeleri birleştirerek bir vektör (tek boyutlu) döndüren c() fonksiyonunu kullanırsınız.
fac <- factor(c("good", "bad", "ugly","good", "bad", "ugly"))
print(fac)
[1] good bad ugly good bad ugly
Levels: bad good ugly
class(fac)
'factor'
fac faktörü good, bad ve ugly olmak üzere üç seviyeye sahiptir; bunu levels anahtar sözcüğüyle kontrol edebilirsiniz ve seviyelerin türü karakter olacaktır.
levels(fac)
nlevels(fac)
3
class(levels(fac))
'character'
İlerlemeden önce, işinize yarayacak birkaç önemli ipucunu anlayalım!
Num
Error in eval(expr, envir, enclos): object 'Num' not found
Traceback:
ls() anahtar sözcüğüyle aşağıda gösterildiği gibi kontrol edebilirsiniz.ls()
Vektörlerin aksine, bir liste çeşitli veri türlerinde öğeler içerebilir ve genellikle sıralı bir değer koleksiyonu olarak bilinir. İçinde vektörler, fonksiyonlar, matrisler ve hatta başka bir liste (iç içe liste) barındırabilir.
R'deki listeler birden başlar; yani indeksleme bire göre yapılır.
Listeler kavramını, tek bir listede üç farklı veri türünü depolayan hızlı bir örnekle anlayalım.
lis1 <- 1:5 # Integer Vector
lis1
lis2 <- factor(1:5) # Factor Vector
lis2
lis3 <- letters[1:5] # Character Vector
lis3
combined_list <- list(lis1, lis2, lis3)
combined_list
Şimdi listedeki her vektöre ayrı ayrı erişelim. Bunu başarmak için, üç vektör de listede aynı seviyede yer aldığından çift köşeli parantez kullanacaksınız. python
combined_list[[1]]
python
combined_list[[2]]
combined_list[[3]]
Şimdi, üçüncü vektörden beşinci öğeye erişmeyi deneyelim; bu da e harfini verir.
combined_list[[3]][5]
'e'
Son olarak, listeyi düzleştirmeyi deneyelim. Unutulmaması gereken önemli bir nokta, combined_list hem character hem de numeric veri türlerinin birleşimi olduğundan, character veri türünün öncelik kazanacağı ve tüm listenin veri türünün character olacağıdır.
flat_list <- unlist(combined_list)
class(flat_list)
'character'
flat_list
length(flat_list)
15
Vektörler, aynı veri türünden birden fazla bilgi veya değeri depolamak için kullanılan nesnelerdir. Bir vektör hem tamsayı hem de karakterin birlikte olduğu bir kombinasyona sahip olamaz. Örneğin 100 öğrencinin toplam notlarını saklamak istiyorsanız, her öğrenci için 100 farklı değişken oluşturmak yerine, tüm öğrenci notlarını saklayacak 100 uzunluğunda bir vektör oluşturursunuz.
Bir vektör, tüm öğeleri birleştirerek tek boyutlu bir dizi döndüren c() fonksiyonuyla oluşturulabilir.
Beş öğrencinin verisini içeren, numeric sınıfında bir marks vektörü oluşturalım.
marks <- c(88,65,90,40,65)
class(marks)
'numeric'
Vektörün uzunluğunu kontrol edelim; bu, içerdiği öğe sayısını döndürmelidir.
length(marks)
5
Şimdi, belirli bir öğeye indeksine göre erişmeyi deneyelim.
marks[4]
40
marks[5]
65
marks[6] #vektörde altıncı bir öğe olmadığından NA döner
<NA>
Dilimleme: Python'a benzer şekilde, dilimleme kavramı R'de de uygulanabilir.
İkinci öğeden beşinciye kadar olan öğelere dilimleme ile erişmeyi deneyelim.
marks[2:5]
Şimdi de bir character vektörü oluşturalım; bu, sayısal vektör oluşturmaya benzer şekilde yapılır.
char_vector <- c("a", "b", "c")
print(char_vector)
[1] "a" "b" "c"
class(char_vector)
'character'
length(char_vector)
3
char_vector[1:3]
Eğer hem sayısal hem de karakter değerler içeren bir vektör oluşturursak, sayısal değerler karakter veri türüne dönüştürülür.
char_num_vec <- c(1,2, "a")
char_num_vec
class(char_num_vec)
'character'
Dilimleme yardımıyla 1024 sayısal değere sahip bir vektör oluşturalım.
vec <- c(1:1024)
Şimdi ortadaki ve son öğeye erişelim. Bunu yapmak için length fonksiyonunu kullanacaksınız.
vec[length(vec)]
1024
vec[length(vec)/2]
512
Tek sayılardan oluşan bir vektör oluşturmak için, başlangıç, bitiş ve adım boyutu olmak üzere üç parametre alan seq fonksiyonunu kullanabilirsiniz.
seq(1,10, by = 2)
Bir vektöre benzer şekilde, bir matris aynı veri türünden bilgileri depolamak için kullanılır. Ancak vektörlerden farklı olarak, matrisler içinde iki boyutlu bilgi tutabilir.
Bir matris tanımlamanın sözdizimi şöyledir:
M <- matrix(vector, nrow=r, ncol=c, byrow=FALSE, dimnames=list(char_vector_rownames, char_vector_colnames))
byrow=TRUE, matrisin satırlara göre doldurulacağını belirtir. byrow=FALSE ise matrisin sütunlara göre doldurulacağını (varsayılan) ifade eder.
Hızlıca $2\times3$ boyutunda bir M matrisi tanımlayalım.
M = matrix( c('AI','ML','DL','Tensorflow','Pytorch','Keras'), nrow = 2, ncol = 3, byrow = TRUE)
print(M)
[,1] [,2] [,3]
[1,] "AI" "ML" "DL"
[2,] "Tensorflow" "Pytorch" "Keras"
Dilimleme kavramını kullanarak satır ve sütundan öğeler getirelim.
M[1:2,1:2] #ilk boyut her iki satırı da seçerken, ikinci boyut
#1. ve 2. sütundaki öğeleri seçecektir
| AI | ML |
| Tensorflow | Pytorch |
Bir matristen farklı olarak, Veri çerçeveleri (Data frame) matrisin daha genelleştirilmiş bir biçimidir. Veriyi tablo şeklinde içerir. Veri çerçevesindeki veriler, farklı veri türlerine sahip çeşitli sütunlara yayılabilir. İlk sütun karakter, ikinci sütun tamsayı, üçüncü sütun mantıksal olabilir.
Değişkenler veya özellikler sütun düzeninde olup başlık olarak da bilinirken, gözlemler satırlardadır; ilk öğe satır adı, ardından gerçek veriler gelir ve bunlar veri satırları olarak adlandırılır.
DataFrame, data.frame() fonksiyonu kullanılarak oluşturulabilir.
DataFrame, virgülle ayrılmış dosyaları (CSV), metin dosyalarını okumada yaygın olarak kullanılmıştır. Kullanımı yalnızca veriyi okumakla sınırlı değildir; özellikle sayısal verilerle çalışırken makine öğrenimi problemleri için de kullanabilirsiniz. DataFrame'ler veriyi anlama, veri düzenleme, çizim ve görselleştirme için faydalı olabilir.
Basit bir örnek veri kümesi oluşturalım ve veri çerçevesine özgü bazı fonksiyonları öğrenelim.
dataset <- data.frame(
Person = c("Aditya", "Ayush","Akshay"),
Age = c(26, 26, 27),
Weight = c(81,85, 90),
Height = c(6,5.8,6.2),
Salary = c(50000, 80000, 100000)
)
print(dataset)
Person Age Weight Height Salary
1 Aditya 26 81 6.0 5e+04
2 Ayush 26 85 5.8 8e+04
3 Akshay 27 90 6.2 1e+05
class(dataset)
'data.frame'
nrow(dataset) # bu, dataset veri çerçevesinde bulunan satır sayısını verir
3
ncol(dataset) # bu, dataset veri çerçevesinde bulunan sütun sayısını verir
5
df1 = rbind(dataset, dataset) # satır bazında birleştirme; argümanları satır şeklinde ekler.
df1
| Person | Age | Weight | Height | Salary |
|---|---|---|---|---|
| <fct> | <dbl> | <dbl> | <dbl> | <dbl> |
| Aditya | 26 | 81 | 6.0 | 5e+04 |
| Ayush | 26 | 85 | 5.8 | 8e+04 |
| Akshay | 27 | 90 | 6.2 | 1e+05 |
| Aditya | 26 | 81 | 6.0 | 5e+04 |
| Ayush | 26 | 85 | 5.8 | 8e+04 |
| Akshay | 27 | 90 | 6.2 | 1e+05 |
df2 = cbind(dataset, dataset) # sütun bazında birleştirme; argümanları sütun şeklinde ekler.
df2
| Person | Age | Weight | Height | Salary | Person | Age | Weight | Height | Salary |
|---|---|---|---|---|---|---|---|---|---|
| <fct> | <dbl> | <dbl> | <dbl> | <dbl> | <fct> | <dbl> | <dbl> | <dbl> | <dbl> |
| Aditya | 26 | 81 | 6.0 | 5e+04 | Aditya | 26 | 81 | 6.0 | 5e+04 |
| Ayush | 26 | 85 | 5.8 | 8e+04 | Ayush | 26 | 85 | 5.8 | 8e+04 |
| Akshay | 27 | 90 | 6.2 | 1e+05 | Akshay | 27 | 90 | 6.2 | 1e+05 |
Milyonlarca kaydınız olduğunda ve yalnızca verinizin ilk birkaç satırını görmek istediğinizde çok faydalı olan head fonksiyonuna bakalım. Benzer şekilde, tail fonksiyonu verinizin son birkaç satırını verir.
head(df1,3) # burada yalnızca üç satır yazdırılır
| Person | Age | Weight | Height | Salary | |
|---|---|---|---|---|---|
| <fct> | <dbl> | <dbl> | <dbl> | <dbl> | |
| 1 | Aditya | 26 | 81 | 6.0 | 5e+04 |
| 2 | Ayush | 26 | 85 | 5.8 | 8e+04 |
| 3 | Akshay | 27 | 90 | 6.2 | 1e+05 |
str(dataset) #bu, her sütun için bireysel sınıf veya veri türü bilgisini döndürür.
'data.frame': 3 obs. of 5 variables:
$ Person: Factor w/ 3 levels "Aditya","Akshay",..: 1 3 2
$ Age : num 26 26 27
$ Weight: num 81 85 90
$ Height: num 6 5.8 6.2
$ Salary: num 5e+04 8e+04 1e+05
Şimdi de veri kümenizin istatistiklerini anlamak istediğinizde işe yarayan summary() fonksiyonuna bakalım. Aşağıda gösterildiği gibi, verinizi üç çeyreğe ayırır; buna göre verinizin dağılımı hakkında sezgi edinebilirsiniz. Ayrıca veri kümenizde eksik değer olup olmadığını da gösterir.
summary(dataset)
Person Age Weight Height Salary
Aditya:1 Min. :26.00 Min. :81.00 Min. :5.8 Min. : 50000
Akshay:1 1st Qu.:26.00 1st Qu.:83.00 1st Qu.:5.9 1st Qu.: 65000
Ayush :1 Median :26.00 Median :85.00 Median :6.0 Median : 80000
Mean :26.33 Mean :85.33 Mean :6.0 Mean : 76667
3rd Qu.:26.50 3rd Qu.:87.50 3rd Qu.:6.1 3rd Qu.: 90000
Max. :27.00 Max. :90.00 Max. :6.2 Max. :100000
Eğitimi tamamladığınız için tebrikler.
Bu eğitim, R programlama dilini öğrenmeye meraklı yeni başlayanlar için iyi bir başlangıç noktasıydı. İyi bir egzersiz olarak, her veri türüyle ilgili daha fazla yardımcı fonksiyonu keşfetmekte özgürsünüz.
Koşullar ve Denetim Akışı (Conditionals and Control Flow), R'deki Yardımcı Araçlar (Utilities) ve en heyecan verici olanı R ile Makine Öğrenimi gibi R ile ilgili hâlâ açığa çıkarılmamış çok fazla bilgi var; bunlar gelecekteki eğitimlerde ele alınacak, takipte kalın!
Bu eğitimle ilgili her türlü sorunuzu aşağıdaki yorumlar bölümünde sormaktan çekinmeyin.
R hakkında daha fazla bilgi edinmek isterseniz, DataCamp'in Orta Düzey R kursunu alın ve R'de Veri Çerçevelerine Giriş eğitimine göz atın.
R hakkında daha fazlasını öğrenin
{count, plural, one {Kurs} other {Kurs}}
{count, plural, one {Kurs} other {Kurs}}
{count, plural, one {Kurs} other {Kurs}}

{count, plural, one {blog} other {blog}}
Abid Ali Awan
14 dk.
{count, plural, one {blog} other {blog}}
Dario Radečić
15 dk.
{count, plural, one {Eğitim} other {Eğitim}}
Adel Nehme
{count, plural, one {Eğitim} other {Eğitim}}
Kurtis Pykes
8 dk.