read.table(), scan() ve read.csv() fonksiyonlarıyla R ortamına dışarıdan veri aktarma

Share on:

SPSS, STATA, SAS vb gibi farklı istatistiksel paketler de dahil olmak üzere hemen her platformda üretilmiş veri R ortamına aktarılabilir. Bunların tamamına burada örnek vermek yazıyı gereksiz yere uzatacaktır. O yüzden en sık kullanılan üç fonksiyondan bahsedeceğim.

Veri girerken sütun başlığı olarak R için yasaklı olan £,$,%,^,&,*,(,),􏰗,#,?,,,.,,/,|,,,[,],{,ve } gibi karakterler kullanılmamalıdır.

Örnek olarak bir sınıfta bulunan öğrencilerin matematik, fen, edebiyat, sanat notlarını ve bunların ortalamasını içeren bir excel dosyası oluşturup, bu dosyayı tab-delimited text dosyası olarak kaydettim. Şimdi bu dosyayı read.table() fonksiyonunu kullanarak R ortamına aktaralım:

classA <- read.table("grades.txt", header=TRUE, dec = ",")
classA
##    ID MATH SCIENCE LITR ARTS mean
## 1  51   75      51   99   57 66.6
## 2  86   77      66   99   87   83
## 3  93   67      53   77   90   76
## 4  99   91      70   61   61 76.4
## 5  55   89      65   62   94   73
## 6  66   98      92   54   50   72
## 7  95   85      82   97   98 91.4
## 8  79   62      68   90   65 72.8
## 9  56   86      69   62   54 65.4
## 10 76   83      70   98  100 85.4
## 11 78   94      81   87   72 82.4
## 12 65   90      85   71   83 78.8
## 13 62   76      99   82   72 78.2
## 14 67   84      76   82   66   75
## 15 50   89      52   66   77 66.8
## 16 78   80      55   96   65 74.8
## 17 66   93      59   77   58 70.6
## 18 54   90      63   99   81 77.4
## 19 69   71      85   66   76 73.4

read.table() fonksiyonuna girdiğim ilk parametre olan file dosyanın disk üzerindeki yerini, header ise ilk satırın değişken isimleri olarak atanıp atanmayacağını bildiriyor. Yani ilk satırın değişken adı olarak atanmasını bildiriyor. Son parametre olan dec ondalık ayracı olarak virgül kullanıldığını bildiriyor.

Bu aşamada sık yapılan hatalar; dosyanın yerinin yanlış girilmesi ve ondalık ayracının hatalı bildirilmesidir. Yine aktarılan verisetindeki değişken isimlerinde boşluk olması, verisetinde boş hücrelerin bulunması hata mesajlarına sebebiyet verecektir. Bunları gidermek için Excel dosyası değiştirilebileceği gibi, read.table() fonksiyonunda mevcut parametreler kullanılabilir. Bu yüzden hata yaptığınız fonksiyonların yardım dosyasını incelemek problemi gidermenize katkı sağlayacaktır.

classA değişkeninin türünü öğrenmek için class() fonksiyonu kullanılabilir:

class(classA)
## [1] "data.frame"

görüldüğü üzere veriseti data frame olarak R içine aktarılmış.

Veri aktarmada scan() fonksiyonu da kullanılabilir. Ancak scan() daha esnek bir fonksiyondur ve verileri vektör yahut liste şeklinde içeri aktarır.

classA1 <- scan("grades.txt", what = list("ID","MATH","SCIENCE","LITR","ARTS","mean"))
classA1
## [[1]]
##  [1] "ID" "51" "86" "93" "99" "55" "66" "95" "79" "56" "76" "78" "65" "62" "67"
## [16] "50" "78" "66" "54" "69"
## 
## [[2]]
##  [1] "MATH" "75"   "77"   "67"   "91"   "89"   "98"   "85"   "62"   "86"  
## [11] "83"   "94"   "90"   "76"   "84"   "89"   "80"   "93"   "90"   "71"  
## 
## [[3]]
##  [1] "SCIENCE" "51"      "66"      "53"      "70"      "65"      "92"     
##  [8] "82"      "68"      "69"      "70"      "81"      "85"      "99"     
## [15] "76"      "52"      "55"      "59"      "63"      "85"     
## 
## [[4]]
##  [1] "LITR" "99"   "99"   "77"   "61"   "62"   "54"   "97"   "90"   "62"  
## [11] "98"   "87"   "71"   "82"   "82"   "66"   "96"   "77"   "99"   "66"  
## 
## [[5]]
##  [1] "ARTS" "57"   "87"   "90"   "61"   "94"   "50"   "98"   "65"   "54"  
## [11] "100"  "72"   "83"   "72"   "66"   "77"   "65"   "58"   "81"   "76"  
## 
## [[6]]
##  [1] "mean" "66.6" "83"   "76"   "76.4" "73"   "72"   "91.4" "72.8" "65.4"
## [11] "85.4" "82.4" "78.8" "78.2" "75"   "66.8" "74.8" "70.6" "77.4" "73.4"

scan() fonksiyonu daha hızlı çalıştığından büyük verisetlerinde tercih edilebilir. Aksi halde read.table() fonksiyonu daha kullanışlıdır.

Son olarak yaygın kullanılan .csv uzantılı verilerin aktarılmasına bakalım:

data <-read.csv("data.csv")

CSV dosyası değişkenleri genellikle virgül işareti ile birbirinden ayırdığından, şayet değişkenler içerisinde virgül kullanılmışsa bu durum verinin hatalı aktarılmasına sebebiyet verecektir. Özellikle rakamlarda ondalık ayracı olarak virgül kullanmışsak sonuç hatalı olacaktır. Bu durumda read.csv2 fonksiyonu kullanılmalıdır.

Başta da belirttiğimiz gibi hemen her tür veriyi R’a aktarmak artık mümkün. R yardım dosyalarından veya internet üzerinden bu konuda destek bulabiliriz.