Ana içeriğe geç

R'ye Veri İçe Aktarma - Bölüm İki

R'ye veri içe aktarma üzerine bir eğitim. Odak noktası istatistik yazılımları, veritabanları, web scraping ve daha fazlası gibi kaynaklardan veri okuma.
· 15 dk. oku

Yapay Zeka ile Keşfedin

Bu R Veri İçe Aktarma Eğitimi İhtiyacınız Olan Her Şey - Bölüm Bir yazısının devamı olan bu takip eğitiminde, DataCamp R'ye veriyi hızla içe aktarmak için basit, düz metin dosyalarından daha gelişmiş SPSS ve SAS dosyalarına kadar kapsamlı ama kolay bir yolculuğa devam ediyor.

İlk yazıdan doğru şekilde fark eden birçok okurumuzun belirttiği gibi, R'ye veri aktarmak için harika bazı paketlere henüz değinilmedi, ayrıca standart veri kümeleriyle büyük veri kümeleri arasında çalışmanın farkı da açıkça ele alınmadı. Bu nedenle, bugünkü yazının odağı bu olacak.

Belirli dosyanızı R'ye aktarmanın diğer ve yeni yollarını keşfetmek için okumaya devam edin; ek sorularınız olursa veya düzeltmemiz gereken bir hata fark ederseniz lütfen bize ulaşın.

(Bu etkileşimli kursu deneyin: R'de Veri İçe Aktarma (Bölüm 1), R'de CSV ve Excel dosyalarıyla çalışın.)

Yaygın Kaynaklardan R'ye Veri Alma

Öncelikle, bu yazı genellikle e-tablo benzeri olan yaygın kaynaklardan veriyi R'ye alma yollarına daha derinlemesine bakacak. Önceki yazıda olduğu gibi, odak Excel veya diğer dosya türlerinden farklı verileri R'ye okumak olacak.

Ardından, istatistik yazılımları, veritabanları, web scraping vb. gibi diğer kaynaklardan gelen veriler tartışılacak.

Verinizi içe aktarmadan önce atmanız gereken olası adımlar hakkında daha fazla bilgi edinmek istiyorsanız, verinizi ve çalışma alanınızı R'ye veri almadan önce nasıl hazırlayabileceğinizi açıklayan ilk yazımıza gidin.

scan() ile Düz Dosyaları R'ye Okuma

R veri içe aktarma eğitiminin ilk yazısında bahsedilen read.table()'ın yanı sıra, scan() fonksiyonu da basit, ayraçlı metin dosyalarında tutulan verileri işlerken işe yarayabilir. read.table() fonksiyonundan farklı olarak, scan() fonksiyonu bir liste veya vektör döndürür, bir veri çerçevesi değil.

Aşağıdaki .txt belgesine sahip olduğunuzu varsayalım:

24 1991
21 1993
53 1962

Veriyi (şuradan indirebilirsiniz: burada) aşağıdaki komutla okuyabilirsiniz:

data <- scan("birth.txt")

Not dosyanız çevrimiçi bir veri kümesi de olabilir. Bu durumda, scan() fonksiyonunun ilk argümanı olarak URL'yi geçirmeniz yeterlidir.

Alternatif olarak, veriyi bir matrise de okuyabilirsiniz:

data <- matrix(scan("birth.txt"),
               nrow=2,
               byrow=TRUE)

İpucu: bunu etraflıca yapmak isterseniz, matrisi tam istediğiniz gibi oluşturmak için ek argümanlar belirtmeniz gerekebilir. matrix() fonksiyonu hakkında daha fazla bilgi için bu sayfaya gidin.

Girdi dosyasının sütunlarını ayrı vektörlere de okuyabilirsiniz:

data <- scan("age.txt",
             what = list(Age = 0,
                         Birthyear= 0),
             skip=1,
             quiet=TRUE)

Not önce uzantısıyla birlikte dosyayı (yolunu) bir argüman olarak geçirip (veri kümenizin bulunduğu klasörü çalışma dizini olarak ayarlayıp ayarlamadığınıza bağlı olarak) ardından okunacak verinin türünü, veri kümenizin ilk satırını atlamak isteyip istemediğinizi, alanları hangi karakterin ayırdığını ve kaç öğe okunduğunu belirten bir satır yazdırmak isteyip istemediğinizi belirtiyorsunuz.

Veriniz başka veri türleri de içerebiliyorsa, scan() fonksiyonunu biraz ayarlamalısınız; tıpkı bu örnekte olduğu gibi:

data <- scan("age.csv",
             what = list(Age = 0,
                         Name= "",
                         Birthyear= 0),
             skip=1,
             sep=";",
             quiet=TRUE)

İpucu: bunu kendiniz de yapabilirsiniz! Yukarıda kullanılan metin dosyasını buradan indirin.

Ve ardından veriyi bir veri çerçevesine de okuyabilirsiniz:

data <- data.frame(scan("age.csv",
                        what = list(Age = 0,
                                    Name = "",
                                    Birthyear= 0),
                        skip=1,
                        sep=";",
                        quiet=TRUE)

İpucu: scan() fonksiyonunun alabileceği argümanların çoğu, read.table() fonksiyonuyla da kullanabildiklerinizle aynıdır. Bu yüzden dokümantasyona göz atmak her zaman faydalıdır! scan() fonksiyonunun argümanlarını okumak isterseniz buraya gidin.

Unutmayın çalışma dizinini sırasıyla aşağıdaki komutlarla alabilir ve ayarlayabilirsiniz:

getwd()
setwd("<path to your folder>")

Sabit Sütunlu Veriyi read.fwf() ile R'ye Alma

R'de “sabit genişlik biçimlendirilmiş veri” tablosunu bir veri çerçevesine okumak için, utils paketindeki read.fwf() fonksiyonunu kullanabilirsiniz.

Bu fonksiyonu, veri dosyanızda boşluk içeren sütunlar veya aralarında boşluk olmayan, bitişik sütunlar olduğunda kullanırsınız.

   Phys / 00 / 1:    M  abadda
   Math / 00 / 2:    F  bcdccb
   Lang / 00 / 3:    F  abcdab
   Chem / 00 / 4:    M  cdabaa

Burada örneğin, konu (subject) değerlerinin her satırın ilk 7 karakterinde yer aldığını, cinsiyet değerlerinin her zaman 22. konumda olduğunu ve puanların 25. karakterden 30'a kadar başladığını biliyorsunuz.

Bu verileri R'ye yüklemeyi denemek isterseniz, metin dosyasını kolayca buradan indirebilirsiniz.

Yukarıdaki veriyi R'ye doğru şekilde almak için aşağıdaki komutu yürütmeniz gerekir:

read.fwf("scores.txt",
         widths= c(7,-14,1,-2,1,1,1,1,1,1),
         col.names=c("subject","sex","s1","s2","s3","s4","s5","s6"),
         strip.white=TRUE)

Not widths argümanı sabit genişlikli alanların genişliğini verir. Bu durumda, dosyanın ilk yedi karakteri ders adlarına ayrılmıştır; Sonraki on dört karakterin okunmasını istemezsiniz: -14 geçirirsiniz. Sonra cinsiyeti temsil etmek için bir karaktere ihtiyacınız vardır, ancak izleyen iki karakteri istemezsiniz, bu yüzden -2 geçirirsiniz. Sonraki tüm karakterler ayrı sütunlara okunmalıdır, bu yüzden argümana 1,1,1,1,1,1 geçirerek bölersiniz. Elbette bu değerler, hangi sütunları içe aktarmak istediğinize bağlı olarak farklılık gösterebilir.

read.fwf() fonksiyonuna geçebileceğiniz bir dizi ek argüman vardır. Okumak için buraya tıklayın.

Not Fortran tarzı biçim belirtimleri kullanarak bir dosya yüklemek istiyorsanız, read.fortran() fonksiyonunu kullanabilirsiniz:

data <- tempfile()
cat(file = data, "345678", "654321", sep = "\n")
read.fortran(data, c("F2.1","F2.0","I2"))

Yukarıdaki küçük örnekten de görebileceğiniz gibi, read.fortran() fonksiyonuna ikinci argüman olarak Fortran tarzı biçim belirtimleri kullanırsınız. Geçebileceğiniz argümanlar şu biçimdedir: “rFl.d”, “rDl.d”, “rXl”, “rAl” veya “rIl”; burada “l” sütun sayısını, “d” ondalık basamak sayısını ve “r” tekrar sayısını ifade eder. Bu durumda c() fonksiyonu aracılığıyla listelenmiş 2.1, 2.0 ve 2 görürsünüz; bu da iki satırlı üç sütununuz olduğu anlamına gelir. İlk sütunda bir ondalık basamaklı değerler, ikinci ve üçüncüde ise ondalık basamak içermeyen değerler vardır.

Sütunların içerdiği değer türleri açısından şunlara sahip olabilirsiniz:

  • Sayı biçimleri için “F” ve “D”;
  • Karakter değerleri varsa “A”;
  • Tam sayı değerleri için “I”;
  • Ve atlanabilecek sütunları belirtmek için “X”.

Bu durumda, birinci ve ikinci sütunlar sayısal biçimler içerirken, üçüncü sütun tam sayı değerleri içerir.

Not tekrar kodu “r” ve ondalık basamak kodu “d” her zaman isteğe bağlıdır. Uzunluk kodu “l” ise “r” mevcut olduğunda “X” biçimleri dışında gereklidir.

(Google) E-tablolarınızı R'ye Alma

E-tablolar R'ye çeşitli şekillerde içe aktarılabilir; bunu Excel dosyalarını R'ye okuma ve içe aktarma eğitimimizde veya ilk Bu R Veri İçe Aktarma Eğitimi İhtiyacınız Olan Her Şey yazımızda zaten okumuş olabilirsiniz. Bu bölüm konuyu genişleterek Google e-tablolarını ve DIF dosyalarını da kapsıyor!

E-tablolarınızı R'ye nasıl aktaracağınız hakkında daha fazlasını öğrenmek için aşağı kaydırın.

Excel E-tablolarını R'ye Aktarma

xlsx paketinin yanı sıra, e-tabloları R'ye okumak için başka seçenekleriniz de var:

1. Excel E-tablolarını Panodan R'ye Okuma

Bir e-tabloyu açıkken, içeriğini panoya kopyalayabilir ve hızlıca R'ye aktarabilirsiniz. Bunu yapmak için readClipboard() veya read.table() fonksiyonlarını kullanabilirsiniz:

readClipboard() #Only on Windows
read.table(file="clipboard")`

Bunu denerseniz göreceğiniz üzere, ilk yaklaşım vektör verileri için iyi çalışır, ancak panonuzda tablolu veri varsa oldukça karmaşıklaşır. read.table() hakkında daha fazla bilgi edinmek istiyorsanız, kesinlikle R veri içe aktarma eğitiminin ilk bölümüne veya Excel dosyalarını R'ye okuma ve içe aktarma eğitimimize gitmelisiniz.

2. Excel E-tablolarını RODBC Paketi Üzerinden R'ye Okuma

Excel e-tablolarınızı R'ye getirmenin ikinci yolu RODBC paketidir:

  • Bu paketi kullanmanın ilk yolu şöyledir:
library(RODBC)
connection <- odbcConnect("<DSN>")

Not odbcConnect()'e geçirdiğiniz argüman aslında bir DSN'dir. DSN'inizi nasıl kuracağınız, bir bağlantıyı nasıl ayarlayacağınız vb. ile ilgili eksiksiz bir rehber için kapsamlı ama kolay erişilebilir bir eğitim olan bu sayfaya gidin!

  • Bağlantınızı kurduktan sonra, .xls e-tablolardan veri almak için sqlQuery() fonksiyonunu da kullanabilirsiniz:
query <- "<SQL Query>"
data <- sqlQuery(connection,
                 query)
str(data)

Büyük ipucu: kapsamlı ama kolay erişilebilir bir eğitim olan bu sayfaya gidin!

Bir R oturumunun sonunda bağlantıları kapatmayı unutmayın:

odbcCloseAll()

İpucu: E-tabloları veya Excel dosyalarını R'ye içe aktarma hakkında daha fazla bilgi edinmek istiyorsanız, mutlaka R'ye veri aktarma konulu ilk eğitimimize gidin veya Excel dosyalarını R'ye okuma ve içe aktarma eğitimimizi okuyun; burada readxl ve XLConnect paketleri de ele alınır.

Google E-tablolarını R'ye Aktarma

googlesheets paketi ve gs_read() fonksiyonu, Google e-tablolarını R'ye okumanıza olanak tanır.

Aşağıdaki kod satırını çalıştırarak başlayın:

gs_ls()

Tarayıcının açılmasına izin verin ve kimlik doğrulama sürecini tamamlayın. Ardından, veriyi okumak veya düzenlemek istiyorsanız, kaydı yapmalısınız. Bunu e-tablosunu başlığa veya anahtara göre belirterek yapabilirsiniz:

data <- gs_title("<your spreadsheet>")
data <- gs_key()

Sonrasında veriyi okuyabilirsiniz:

gs_read(data)

Bu, googlesheets paketiyle yapabileceklerinizin kısa bir özetidir. Tüm ayrıntıları mutlaka buradan okuyun ve bu sayfayı da kontrol edin.

Veri Değişim Biçimi (DIF) Dosyalarını R'ye Okuma

DIF dosyalarınızı R'ye almak için read.DIF() fonksiyonunu kullanın:

data <- read.DIF("<your spreadsheet>",
                 header=FALSE,
                 as.is = !stringsAsFactors)

Not e-tablosunun bir başlığı olup olmadığını ve verileri “olduğu gibi” içe aktarmak isteyip istemediğinizi belirtebilirsiniz; yani karakter değişkenlerinin faktöre dönüştürülüp dönüştürülmeyeceği. Bu durumda bunu istemediniz ve !stringsAsFactors verdiniz.

Bu fonksiyon veya argümanları hakkında daha fazla bilgi için bu sayfaya gidin.

Excel Dosyalarını R'ye Alma

E-tabloların yanı sıra, gerçek Excel dosyalarınızı da R'ye almak isteyebilirsiniz. Daha fazla aramayın; bunu nasıl yapabileceğinizi öğrenmek için okumaya devam edin!

Not bu yazı yalnızca Excel dosyalarını R'ye okuma ve içe aktarma eğitimimizde ve ilk Bu R Veri İçe Aktarma Eğitimi İhtiyacınız Olan Her Şey yazımızda anlatılanları genişletmektedir!

readxl ile Excel Dosyalarını R'ye Aktarma

Bu paket hâlâ aktif geliştirme aşamasında olsa da, Excel dosyalarını okumayı oldukça kolaylaştırdığı için mutlaka göz atmaya değerdir:

library(readxl)
read_excel("<path to file")

Unutmayın klasörünüz çalışma dizininizdeyse yalnızca dosya adını uzantısıyla birlikte yazabilirsiniz. Çalışma dizininizi aşağıdaki kod satırlarıyla alın ve ayarlayın:

getwd()
setwd("<Path to your folder>")

Not sheet, col_names, col_types, na ve skip argümanlarıyla sırasıyla okunacak sayfayı, sütun adlarını ve türlerini, eksik değerleri ve herhangi bir veriyi okumadan önce atlanacak satır sayısını belirtebilirsiniz. Ayrıntılar için burayı okuyun.

openxlsx ile Excel Dosyalarını R'ye Okuma

openxlsx paketi de Excel .xlsx dosyalarını R'ye okumanız için basit bir yol sunar:

library(openxlsx)
read.xlsx("<path to your file>")

Bu paket veya read.xlsx() fonksiyonuna geçebileceğiniz argümanlar hakkında daha fazla ayrıntı istiyorsanız mutlaka buraya tıklayın.

İpucu: Excel dosyalarını R'ye içe aktarma hakkında daha fazla bilgi istiyorsanız mutlaka “R'ye veri içe aktarma” konulu ilk eğitimimize gidin veya Excel dosyalarını R'ye okuma ve içe aktarma konulu kapsamlı eğitimimizi okuyun; burada XLConnect paketi de dâhil olmak üzere diğerleri ele alınır.

OpenDocument E-tablolarını R'ye Alma

OpenDocument e-tablolarınızı R'ye okumak ve veri çerçevelerine koymak için readODS paketindeki read.ods() fonksiyonunu kullanın:

library(readODS)
read.ods("<path to your file>",
         sheet = 1,
         formulaAsFormula = FALSE)

Not dosyanın yanı sıra istediğiniz sayfayı belirtebilir ve formülleri formül olarak (örneğin “SUM(B1:B3)”) veya çıkan değerler olarak görüntüleme seçeneğine sahipsiniz.

JavaScript Object Notation (JSON) Dosyalarını R'ye İçe Aktarma

R'ye veri aktarma konulu ilk yazımızda, rjson paketinden JSON dosyalarını R'ye almak için bahsedilmişti.

Bununla birlikte, JSON dosyalarını R'ye içe aktarmak için kullanabileceğiniz başka paketler de vardır. Daha fazlasını öğrenmek için okumaya devam edin!

jsonlite Paketiyle JSON Dosyalarını R'ye İçe Aktarma

Son zamanlarda 66952 indirme ile en çok indirilen R paketleri arasında ilk 25'te yer alan jsonlite paketi, R kullanıcılarının kesinlikle favorilerindendir.

JSON dosyalarını fromJSON() fonksiyonuyla içe aktarırsınız:

library(jsonlite)
data <- fromJSON("<Path to your JSON file>")

jsonlite paketiyle iyi açıklanmış bir hızlı başlangıç için buraya gidin.

RJSONIO Paketiyle JSON Dosyalarını R'ye İçe Aktarma

JSON dosyalarını R'ye almak için bilinen üçüncü paket RJSONIO'dur. jsonlite ve jsonlite paketlerinde olduğu gibi, fromJSON() fonksiyonunu kullanırsınız:

library(RJSONIO)
data <- fromJSON("<Path to your JSON file")

En İyi JSON Paketi Hangisi?

Bu konu hakkında epey tartışma oldu. Daha fazla bilgi edinmek istiyorsanız, mutlaka aşağıdaki sayfa ve yazılara göz atın:

  • bu sayfa, R'deki JSON paketlerinin davranışı ve performansına dair daha fazla içgörü sağlayan kod örnekleri üzerinden ağırlıklı olarak gösterimler sunar.
  • R'de JSON verisini hangi paketin en iyi şekilde işlediğini anlamaya çalışan bu blog yazısını mutlaka okuyun.

İstatistik Yazılım Paketlerinden R'ye Veri Alma

Veriniz gerçekten e-tablo benzeri değilse ve Excel veya JSON dosyası değilse, muhtemelen çok sayıdaki istatistik yazılım paketinden biriyle oluşturulmuş olabilir.

Bu bölümde SPSS, Stata veya SAS dosyalarınızı okumak için daha fazla yol sunulacak; ayrıca S-plus ve Epi Info'dan gelen dosyaları içe aktarmaya genel bir bakış da verilecek. Daha fazla bilgi istiyorsanız mutlaka ilk yazımıza veya aşağıda verilen bağlantılara geri dönün!

SPSS Dosyalarını R'ye İçe Aktarma

foreign paketini kullanmak yerine, SPSS dosyalarınızı R'ye almak için haven paketine de başvurabilirsiniz.

Unutmayın başlamadan önce paketi çalışma alanınıza kurup etkinleştirdiğinizden emin olun!

haven paketi SPSS dosyalarını R'ye okumak için read_spss() fonksiyonunu sunar:

library(haven)
data <- read_spss("<path to your SPSS file>")

Stata Dosyalarını R'ye İçe Aktarma

foreign paketine benzer şekilde, haven paketi de Stata dosyalarını R'ye okumak için read_dta() fonksiyonunu sağlar:

data <- read_dta("<path to your STATA file>")

Unutmayın gerektiğinde paketlerinizi her zaman kurun ve çalışma alanınızda etkinleştirin. Örneğin, haven paketini aşağıdaki komutlarla kurup etkinleştirebilirsiniz:

install.packages("haven")
library(haven)

SAS Dosyalarını R'ye İçe Aktarma

Son yazıda sas7bdat paketinden söz edildiği için, bu takip eğitimi SAS dosyalarını okumanın diğer yollarına odaklanacaktır:

1. foreign paketiyle SAS XPORT Dosyalarını R'ye Nasıl Aktarırsınız

foreign paketi ve read.xport() fonksiyonu SAS XPORT dosyalarınızı R'ye almanıza da olanak tanır:

library(foreign)
data <- read.xport("<path to your SAS file>")

2. SASxport Paketiyle SAS XPORT Dosyalarını R'ye Nasıl Aktarırsınız

sasXPORT paketi de read.xport() fonksiyonuyla SAS XPORT dosyalarını okumaya olanak tanır:

library(SASxport)
data <- read.xport("<path to your SAS file>")

3. haven Paketiyle SAS Dosyalarını R'ye Nasıl Aktarırsınız

foreign ve sas7bdat paketlerinde olduğu gibi, haven paketi de read_sas() fonksiyonuyla b7dat dosyalarını R'ye okumanıza olanak tanır:

library(haven)
data <- read_sas("<path to your SAS file>")

S-plus Dosyalarını R'ye Alma

Eski S-plus veri setleri için, yani Windows 3.x, 4.x veya 2000 sürümlerinde veya Unix 3.x (4 bayt tamsayı) sürümünde üretilenler için, foreign paketindeki read.S() fonksiyonunu kullanabilirsiniz:

library(foreign)
data <- read.S("<Path to your file>")

Epi Info Dosyalarını R'ye Okuma

Önceki eğitimimizde veya bu yazıda okumuş olabileceğiniz gibi, foreign paketi R'ye belirli dosyaları okumak için birçok fonksiyon sunar ve Epi Info bunlardan biridir. Verinizi R'ye almak için read.epiinfo() fonksiyonunu kullanabilirsiniz:

library(foreign)
data <- read.epiinfo("<Path to your file>")

Epi Info hakkında daha fazla bilgi için buraya tıklayın.

Diğer Kaynaklardan R'ye Veri Alma

Yaygın kaynaklar ve istatistik yazılımlarının yanı sıra, R'ye okumak istediğiniz verilerin gelebileceği birçok başka kaynak da vardır.

Bunlardan birkaçı aşağıda listelenmiştir. Okumaya devam edin!

MATLAB Dosyalarını R'ye İçe Aktarma

MATLAB dosyalarını R'ye aktarmak için R.matlab paketi ve readMat() fonksiyonunu kullanabilirsiniz.

Bu fonksiyona ilk argüman olarak bir karakter dizisi veya ham bir vektör geçirebilirsiniz. İlk durumda girdiniz bir dosya adı olarak yorumlanırken, ikinci durumda ham bir ikili bağlantı olarak kabul edilir:

library(R.matlab)
data <- readMat("<Path to your file>")

readMat() fonksiyonu, içe aktardığınız MAT dosyasındaki tüm değişkenleri içeren adlandırılmış bir liste yapısı döndürür.

Octave Dosyalarını R'ye Okuma

foreign paketi yine burada! Octave metin verilerini R'ye aktarmak için read.octave() fonksiyonunu kullanın:

library(foreign)
data <- read.octave("<Path to your file>")

FitbitScraper Verisini R'ye Alma

fitbit'ten veri almak için fitbitScraper paketini kullanabilirsiniz.

(Şirketi bilmeyenler için: şirket, atılan adım sayısı veya uyku kalitesi gibi kişisel verileri ölçen aktivite takipçileri ve diğer teknoloji cihazları sunar.)

fitbitScraper paketini nasıl kullanabileceğinize dair kısa ve pratik bir eğitim için buraya gidin.

Quantmod Verisini R'ye Aktarma

Bu paketi, R ile bir internet kaynağından finansal veri çekmek için kullanabilirsiniz. Verinizi R'ye almak için kullandığınız fonksiyon getSymbols()'dır; örneği:

library(quantmod)
data <- getSymbols("YHOO", src="google")

Not önce yüklenecek her sembolün adlarıyla bir karakter vektörü belirtirsiniz. Bu durumda, "YHOO". Sonra bir kaynak yöntemi tanımlarsınız. Şu anda mevcut kaynak yöntemleri yahoo, google, MySQL, FRED, csv, RData ve oanda'dır.

Ardından arama parametrelerini belirtip gelecekteki oturumlar için kaydedersiniz:

setSymbolLookup(YHOO='google',GOOG='yahoo')
saveSymbolLookup(file="mysymbols.rda")

Yeni oturumlar daha sonra şunu çağırır

loadSymbolLookup(file="mysymbols.rda")
getSymbols(c("YHOO","GOOG"))

R'de nicel finans uygulamaları hakkında daha fazla bilgi istiyorsanız, buraya tıklayın veya yeni başlayanlar için quantmod ile çalışma üzerine ayrıntılı bir eğitim için bu sayfaya gidin.

ARFF Dosyalarını R'ye Alma

Weka Öznitelik-İlişki Dosya Biçimi (ARFF) dosyalarındaki veriler read.arff() fonksiyonuyla okunabilir:

library(foreign)
data <- read.arff("<Path to your file>")

Bu fonksiyon hakkında daha fazla bilgi için bu sayfaya gidin.

Not RWeka paketi de ARFF dosyalarını içe aktarmak için aynı fonksiyonu sunar. Daha fazla bilgi istiyorsanız buraya gidin!

Veritabanlarından R'ye Veri Aktarma

Önceki yazıda ele alınan MonetDB.R, rmongodb ve RMySQL'e ek olarak, R'de veritabanlarınıza bağlanmak için başka paketleriniz de var.

Ayrıca mongolite, RMongo, RODBC, ROracle, RPostgreSQL, RSQLite, RJDBC da mevcuttur.

Bu paketlere ilişkin eğitimler için aşağıdaki listeye göz atın:

Not R ile ilişkisel veritabanı yönetim sistemleri arasında iletişime izin veren bir veritabanı arayüz paketi olan DBI de vardır. Daha fazla bilgi için buraya tıklayın.

Bu paketin nasıl kullanılacağına dair bazı açıklamalar burada bulunabilir.

İkili Dosyaları R'ye Alma

İkili veri dosyaları, ikili basamak grupları hâlinde saklanan bilgiler içerir. Her ikili basamak sıfır veya birdir. Bir araya getirilmiş sekiz ikili basamak bir bayt oluşturur. İkili veriyi readBin() fonksiyonuyla okuyabilirsiniz:

connection <- file("<path to your file>", "rb") #You open the connection as "reading binary"(rb)
data <- readBin(connection,
                what="numeric") #Mode of the vector to be read

Daha ayrıntılı bir örnek için bu sayfaya gidin. readBin() fonksiyonu hakkında daha fazla bilgi için buraya tıklayın.

İkili Veri Biçimlerini R'ye Okuma

hdf5, h5r, rhdf5, RNetCDF, ncdf ve ncdf4 paketleri NASA'nın HDF5 ve UCAR'ın netCDF veri dosyalarına arayüzler sağlar.

R'de HDF5 veya netCDF dosyalarıyla çalışma konusunda bazı eğitimlerle ilgilenenler için, aşağıdaki kaynaklara göz atın:

  • R'de pathfinder paketini de kullanarak HDF dosyalarıyla çalışmaya dair mükemmel bir eğitim burada bulunabilir;
  • R'de netCDF üzerine yeni başlayanlar için kolay erişilebilir bir eğitim bu sayfada bulunabilir.

DBF Dosyalarınızı R'ye Alma

DBF veya DataBase File, dBase'in temel biçimidir. foreign paketini kullanarak, read.dbf() fonksiyonuyla DBF dosyalarını okuyabilirsiniz:

library(foreign)
data <- read.dbf("<Path to your file>")

Not Windows kullanıyorsanız, Microsoft'un dBase ODBC sürücüsü üzerinden DBF dosyalarını okumak için RODBC paketindeki odbcConnectDbase() fonksiyonunu da kullanabilirsiniz.

Düz Olabilirlik (Flat) Koşullu Tabloları R'ye İçe Aktarma

foreign paketi birden çok dosya biçimini okumanıza izin verir; 'Düz' koşullu tablolar da istisna değildir. Bunu gerçekleştirmek için read.ftable() fonksiyonunu kullanabilirsiniz:

library(foreign)
data <- read.ftable("<Path to your file>")

Unutmayın “düz” koşullu tablolar, “normal” koşullu tablolara çok benzer: ilgili değişkenlerin (faktörlerin) düzeylerinin her bir kombinasyonunun sayımlarını içerirler. Ancak bu bilgi, satır ve sütun değişkenlerinin düzeylerinin benzersiz kombinasyonlarına karşılık gelen satır ve sütunlara sahip bir matris olarak yeniden düzenlenir. Bu nedenle, “düz” koşullu tablolar daha yüksek boyutlu koşullu tabloları temsil etmek için sıklıkla tercih edilir.

CBS (Coğrafi Bilgi Sistemi) Dosyalarını R'ye Okuma

CBS dosyalarınızı R'ye almak için başta rgdal ve raster olmak üzere paketleri kullanabilirsiniz.

rgdal paketini kullanmaya nasıl başlayacağınızdan emin değilseniz, R'de mekânsal verilerle çalışmaya giriş niteliğindeki bu güzel blog yazısına göz atın.

rgdal ve raster ile de çalışan bu eğitime de göz atabilirsiniz.

Entegre Taksonomik Bilgi (ITIS) Tablolarını R'ye İçe Aktarma

ITIS tablolarını read.table() fonksiyonuyla içe aktarabilirsiniz:

data <- read.table("<Path to your file>")

ITIS hakkında daha fazla bilgi için buraya tıklayın.

Büyük Veri Kümelerini R'ye İçe Aktarma

Büyük veri kümelerini içe aktarmak R kullanıcıları arasında sıkça tartışılır. Veritabanlarına bağlanmak için tasarlanmış paketlerin yanı sıra, büyük verilerle çalışırken öne çıkan bazıları da vardır.

data.table Paketiyle Büyük Veri Kümelerini R'ye İçe Aktarma

“Hızlı ve dost canlısı dosya cambazı” olarak tanımlanan popüler data.table paketi son derece kullanışlı ve kolaydır. fread() fonksiyonu, düzenli ayraçlı dosyalardan veriyi doğrudan R'ye, dolambaçsız ve gereksiz adımlar olmadan içe aktarmak için tasarlanmıştır.

Not burada “düzenli” demek, verinizin her satırının aynı sayıda sütuna sahip olması gerektiği anlamına gelir. Örnek:

  V1 V2 V3
1  1  6  a
2  2  7  b
3  3  8  c
4  4  9  d
5  5 10  e

Bu fonksiyonun harika yanlarından biri, sep, colClasses ve nrows gibi argümanlarla ifade edilen tüm kontrollerin otomatik olarak tespit edilmesidir. Ayrıca, bit64::integer64 türleri de tespit edilir ve karaktere okuyup sonra dönüştürmeye gerek kalmadan doğrudan okunur.

Unutmayın bit64::integer64 türleri 64 bit tamsayılardır: bu sayılar bilgisayarda 64 bit uzunluğunda saklanırlar. Varsayılan olarak bunlar yalnızca 32 bittir. bit64::integer64 türleri tespit edildiği için sistem bunun bir sayı olduğunu bilir ve önce karakter olarak okunup sonra tamsayıya dönüştürülmez.

fread() fonksiyonuna bir örnek:

library(data.table)
data <- fread("http://assets.datacamp.com/blog_assets/chol.txt")
data
##      AGE HEIGHT WEIGHT CHOL  SMOKE BLOOD  MORT
##   1:  20    176     77  195 nonsmo     b alive
##   2:  53    167     56  250 sigare     o  dead
##   3:  44    170     80  304 sigare     a  dead
##   4:  37    173     89  178 nonsmo     o alive
##   5:  26    170     71  206 sigare     o alive
##  ---
## 196:  35    174     57  222   pipe     a alive
## 197:  38    172     91  227 nonsmo     b alive
## 198:  26    170     60  167 sigare     a alive
## 199:  39    165     74  259 sigare     o alive
## 200:  49    178     81  275   pipe     b alive

Not verinizi fread() fonksiyonuyla okuduğunuzda bir data table döner:

str(data)
## Classes 'data.table' and 'data.frame':   200 obs. of  7 variables:
##  $ AGE   : int  20 53 44 37 26 41 39 28 33 39 ...
##  $ HEIGHT: int  176 167 170 173 170 165 174 171 180 166 ...
##  $ WEIGHT: int  77 56 80 89 71 62 75 68 100 74 ...
##  $ CHOL  : int  195 250 304 178 206 284 232 152 209 150 ...
##  $ SMOKE : chr  "nonsmo" "sigare" "sigare" "nonsmo" ...
##  $ BLOOD : chr  "b" "o" "a" "o" ...
##  $ MORT  : chr  "alive" "dead" "dead" "alive" ...
##  - attr(*, ".internal.selfref")=<externalptr>

Bu, verinizden bir veri çerçevesi oluşturan read.table()'dan farklıdır.

Veri çerçeveleri ve data table'lar arasındaki farklar burada açıklanmıştır. Kısaca, en önemlisi tüm data.table'ların aynı zamanda data.frame olduğudur: data.table'lar da data.frame'dir. Bir data.table, yalnızca data.frame kabul eden herhangi bir pakete geçirilebilir ve o paket, data.table üzerinde [.data.frame sözdizimini kullanabilir. data.table hakkında daha fazlasını burada okuyun.

library(data.table)
data <- fread("http://assets.datacamp.com/blog_assets/chol.txt",
              sep=auto,
              nrows = -1,
              na.strings = c("NA","N/A",""),
              stringsAsFactors=FALSE
              )

Not girdi, okumak istediğiniz bir dosya da olabilir ve her zaman bir URL olmak zorunda değildir. Ayrıca argümanların çoğunun, örneğin read.table()'da kullandıklarınızla aynı olduğuna dikkat edin.

İpucu: data.table hakkında daha fazla bilgi mi istiyorsunuz? Belki R'de Veri Analizi, data.table Yolu kursumuz ilginizi çekebilir! Matt Dowle ve Arun Srinivasan'ın rehberliğinde kısa sürede data.table acemisinden uzmanına dönüşeceksiniz.

ff Paketiyle Büyük Veri Kümelerini R'ye Alma

ff paketi, “büyük verilerin disk üzerinde bellek açısından verimli depolanmasını ve hızlı erişim fonksiyonlarını” sağlar. Büyük verileri veri çerçeveleri olarak okumayı ele alan tartışmalara baktığınızda sıkça karşınıza çıkan çözümlerden biridir; örneğin burada.

Ayrılmış düz dosyaları ff veri çerçevelerine aktarmak istiyorsanız, önceki yazılarımızda açıklanan read.table() fonksiyonu ve onun türevleri veya kolaylaştırıcıları gibi, read.table.ffdf(), read.csv.ffdf(), read.csv2.ffdf(), read.delim.ffdf() veya read.delim2.ffdf() fonksiyonlarını kullanabilirsiniz:

bigdata <- read.table.ffdf(file="<Path to file>",
                           nrows=n)

Not ilk argümanınız NULL olabilir (bu örnekte olduğu gibi) veya okunan kayıtların ekleneceği isteğe bağlı bir ffdf nesnesini belirtebilir. Daha fazla bilgi istiyorsanız lütfen buraya gidin. Ardından file argümanıyla verilerin okunduğu dosyayı adlandırırsınız. nrows ile okunacak maksimum satır sayısını da belirtebilirsiniz (bu da read.table() ile yapacağınızla aynıdır!).

Daha da ileri gidip dosya kodlamasını, düzeyleri veya her parçayı okumak için çağrılan bir fonksiyonun adını belirtebilirsiniz:

library(ff)
bigdata <- read.table.ffdf(file="<Path to file>",
                           nrows=n,
                           fileEncoding="",
                           levels=NULL,
                           FUN="read.table")

İpucu read.table.ffdf(), read.csv.ffdf(), read.csv2.ffdf(), read.delim.ffdf() veya read.delim2.ffdf() fonksiyonlarına ekleyebileceğiniz daha fazla argümanı burada bulabilirsiniz.

bigmemory ile Büyük Veri Kümelerini R'ye İçe Aktarma

R'de büyük veri kümeleriyle ilgili herhangi bir aramada sıkça karşınıza çıkan bir diğer paket bigmemory'dir. Bu paket, “paylaşımlı bellek ve bellek eşlemeli dosyalarla devasa matrisleri yönetmenize” olanak tanır.

Not bu paketi Windows'ta kullanamazsınız: Windows ikili dosyaları mevcut değildir.

library(bigmemory)
bigdata <- read.big.matrix(filename="<File name>",
                           sep="",
                           header=TRUE,
                           skip=2)

Her zamanki gibi, önce fonksiyona dosya adını verirsiniz ve ardından sep, header ve skip argümanlarıyla sırasıyla ayırıcı sembolü, başlığı veya dosyanızı okumaya başlamadan önce atlanacak satır sayısını belirtmeye başlayabilirsiniz.

Not bunlar yalnızca birkaç örnektir! read.big.matrix() fonksiyonuna çok daha fazla argüman geçebilirsiniz! Daha fazla bilgi istiyorsanız dokümantasyonu okuyun.

sqldf Paketiyle Büyük Veri Kümelerini R'ye Okuma

sqldf paketi de büyük veri kümeleriyle çalışırken kullanmayı düşünebileceğiniz paketlerdendir. Bu paketle “R üzerinde SQL seçimleri” yapabilirsiniz ve özellikle read.csv.sql() fonksiyonu bir dosyayı R'ye okurken onu bir SQL ifadesiyle filtrelemek istediğinizde çok kullanışlıdır. Böylece verilerin yalnızca bir kısmı R tarafından işlenir:

library(sqldf)
bigdata <- read.csv.sql(file="<Path to your file>",
                        sql="select * from file where ...",
                        colClasses=c("character",
                                     rep("numeric",10)))

Not yukarıdaki örnek, büyük veri kümelerini R'ye içe aktarmanıza izin veren diğer fonksiyonlara oldukça benzer; tek fark, read.csv.sql() fonksiyonuna geçtiğiniz ikinci argümanın bir SQL ifadesi olmasıdır. SQL sorgunuzda referans verdiğiniz tablolar, read.csv.sql()'un file argümanında belirttiğiniz dosyanın bir parçasıdır.

İpucu: sqldf ile çalışma hakkında daha fazla bilgi için bir video eğitimi için buraya veya yazılı bir temel özet için buraya gidin.

read.table() Fonksiyonuyla Büyük Veri Kümelerini R'ye İçe Aktarma

Verinizi içe aktarmak için “standart” read.table() fonksiyonunu kullanabilirsiniz, ancak bu, özellikle daha büyük veri kümeleriyle daha iyi çalışmak üzere tasarlanmış diğer paketlere göre muhtemelen daha uzun sürecektir. ilk yazımıza geri dönerek read.table() fonksiyonunun nasıl çalıştığını görebilirsiniz.

Bu fonksiyonu biraz daha hızlı hâle getirmek için, onu optimize edilmiş bir read.table() fonksiyonu elde edecek şekilde kendiniz ayarlayabilirsiniz. Bu ayarlama, aslında alışılmış read.table() fonksiyonuna argümanlar eklemekten ibarettir; şöyle:

df <- read.table("<Path to your file>",
                 header = FALSE,
                 sep="",
                 quote = "",
                 na.strings = "EMPTY",
                 colClasses = c("character", "numeric", "factor"),
                 strip.white = TRUE,
                 comment.char="",
                 stringsAsFactors = FALSE,
                 nrows = n
                 )

Not şunları

  • önce, dosyayı (yoluyla) geçirirsiniz; dosyanın bulunduğu klasörü çalışma dizini olarak ayarlayıp ayarlamadığınıza bağlı olarak.
  • Ardından, dosyanın ilk satır olarak değişken adlarını içerip içermediğini belirtmek için header argümanını kullanırsınız. Yukarıdaki örnekte bu söz konusu değildir.
  • Alan ayırıcı karakter / olarak sep argümanıyla ayarlanır; bu, dosyanın her satırındaki değerlerin bu karakterle ayrıldığı anlamına gelir.
  • Sonra, tırnaklamayı devre dışı bırakmayı veya etkinleştirmeyi de seçebilirsiniz. Bu durumda, quote="" olduğundan, tırnaklama devre dışı bırakılır.
  • Veri kümenizdeki “EMPTY” dizgisinin bir NA değeri olarak yorumlanacağını da tanımlarsınız.
  • Ardından, sütunlarınızın sınıflarını tanımlarsınız: bu durumda, ilk sütunun karakter, ikincinin sayısal, sonuncunun ise faktör olduğunu belirtirsiniz.
  • strip.white ile tırnaklanmamış karakter alanlarından baştaki ve sondaki boşlukların kırpılmasına izin verirsiniz; bu yalnızca sep argümanını kullandığınızda geçerlidir!
  • comment.char "" olarak ayarlandığında, yorumların yorumlanmasını kapatırsınız.
  • Karakterlerin faktöre dönüştürülmesini istemiyorsunuz! Bu yüzden colClasses'ı tanımladınız. Bunu stringsAsFactors'ı FALSE yaparak teyit ediyorsunuz.
    İpucu: bu argüman, colClasses ve comment.char ile birlikte, verinizi sorunsuz içe aktarmak istiyorsanız muhtemelen en önemli olanlardandır!
  • Son olarak, okunacak maksimum satır sayısını belirlersiniz.

İpucu: read.table() fonksiyonuna geçebileceğiniz tüm argümanlar hakkında daha fazla bilgi istiyorsanız, mutlaka Excel dosyalarını R'ye okuma yazımızı okuyun.

readr Paketiyle Büyük Veri Kümelerini R'ye İçe Aktarma

Büyük veri kümenizi R'ye içe aktarmak için kullanabileceğiniz daha hızlı paketlerden biri de, readr paketidir; bu paket, tıpkı read.table gibi tablolu metin verisini okumanıza olanak tanır. Bununla birlikte, readr paketi “ek işlevsellik sağlayan ve çok daha hızlı olan bir dizi yedek fonksiyon” sunar (bkz. burada).

df <- read_table("<Path to your file>",
                 col_names=TRUE)

Not readr paketi, orijinal olanlardan daha hızlı giden read_csv(), read_csv2(), read_delim(), read_fwf(), read_tsv() ve daha birçok fonksiyon da sunar! Ayrıntılar burada bulunabilir.

İpucu: bu paket hakkında daha fazla bilgiye bu GitHub sayfasından ulaşabilirsiniz.

R'de Büyük Veriyi Ele Alma Üzerine Bazı Notlar

R'de büyük veriyi ele almak için daha fazla ipucu için, paketleri ve veriyi ikili biçimlerde depolama ile saveRDS/readRDS veya HDF5 biçimi için rhdf5 paketinin kullanımını da ele alan bu StackOverflow tartışmasına bakmalısınız.

Not son dosya biçimi yukarıda ele alınmıştır ve yukarıda ele alınanların dışında da birçok paket mevcuttur. Örneğin, RODBC ve MonetDB.R gibi veritabanlarına bağlanmak için kullanılan paketler, daha büyük veri kümelerini ele almak için de kolayca kullanılabilir ve dplyr paketi, veritabanlarının çeşitli türlerinde depolanan verilerle doğrudan çalışmak istediğinizde de değerini kanıtlar.

İpucu: R'de veri manipülasyonu ile ilgileniyor musunuz? O halde dplyr üzerine etkileşimli kursumuz ilginizi çekebilir! Garrett Grolemund'un rehberliğinde, dplyr kullanarak gelişmiş veri manipülasyonu görevlerini nasıl gerçekleştireceğinizi öğreneceksiniz.

Yukarıda listelenen paketlerin yükleme performansını test eden bu ilginç yazıyı mutlaka kontrol edin!

rio Paketiyle Verinizi R'ye Alma

Bu “Veri Giriş/Çıkışı için İsviçre çakısı”, R'ye veri girişi ve çıkışını sizin için kolaylaştırır! Veriyi neredeyse herhangi bir dosya biçiminden içe/dışa aktarabilirsiniz: rio paketini kurduğunuzda, birçok ayrı veri okuma paketini tek bir pakette toplarsınız. Ardından veri alıp vermek isterseniz yalnızca iki fonksiyonu hatırlamanız gerekir: import() ve export(): rio, dosya uzantısından veri yapısını çıkarmak, web tabanlı veri kaynaklarını yerel olarak okumak ve içe/dışa aktarma için makul varsayılanları ayarlamak üzere ayrı veri okuma paketlerine dayanır.

Kısacası, rio içe ve dışa aktarma için yaygın olarak kullanılan geniş bir dosya türü setini destekler.

rio ile dosyalarınızı içe aktarma şu şekilde gerçekleşir:

library(rio)
data <- import("<Path to your file>")

rio tarafından desteklenen dosya biçimlerinin tam listesini görmek istiyorsanız bu sayfayı ziyaret edin.

Son Söz

R'de büyük veriyle çalışmayı öğrenmekle ilgileniyorsanız, DataCamp'teki R'de Quandl ile Nasıl Çalışılır ve “Revolution R Enterprise ile Büyük Veri Analizi” kurslarına mutlaka göz atın!

Konular

İlgili