class: center, middle, inverse, title-slide # Veri Okuma ## read.*() fonksiyonu ### Dr. Atalay Kabasakal ### Kasim, 2021 --- ## Veri Okuma -- - Veri girisi istatistiksel analiz surecinin ilk adimidir. -- - R'da veri girisi diger yazilimlarla kiyaslandiginda cok kullanisli degildir. -- - Bu nedenle aktarma/import yolu tercih edilir. -- - Veri aktarimi icin cok sayida fonksiyon ve paket bulunmaktadir. -- - Ayrica menu ile de aktarma yapilabilir. -- - Bilgiyasardan, interneten farkli formattaki veriler okunabilir. -- --- ## Veri Okuma - En temel veri okuma/aktarma fonksiyonlari - `read.*` -- - `read.table()` -- - `read.csv()` -- - `read.csv2()` -- - `read.delim()` -- - `read.delim2()` -- - `readLines()` --- ## read.\*() fonksiyonlari `read.*()` fonksiyonlari - `read.fwf()` sutunlarin herhangi bir ayracla ayrilmadigi - `read.table()` sutunlarin belirli bir sekilde ayrildigi - `read.csv()` fonksiyonu sutunlarin "," ile ayrildigi - `read.csv2()` fonksiyonu sutunlarin ";" ile ayrildigi - `read.delim()` fonksiyonu sutunlarin sekme ile ayrildigi Bu fonksiyonlarin cok sayida argumani bulunmaktadir. --- ## read.\*() fonksiyonlari Sik kullanilan read.*() fonksiyonlari argümanları: | **Argüman** | **Açıklama** | |:--- |:--- | | | | | | | | **header** | Mantıksal değerler ile verinin ilk satırında değişken isimlerinin olup olmadığını test eder. | | | | | | | | **sep** | Sütun ayracıdır. | | | | | | | | **na.strings** | Kayıp değerleri belirtmek için kullanılır. | | | | | | | | **dec** | Ondalık sayıların ne ile ayrıldığını gösteren argümandır. | | | | | | | | **nrows** | Okunmak istenilen satır sayısını belirtmek için kullanılır. | | | | | | | | **skip** | Bir dosya okunurken okunmadan atlanmak istenilen satır sayısı için kullanılır. | | | | | | | --- ## read.fwf() - **"fwf.txt"** dosya icerigi ogrenci sirasi numarasi, kitapcik turu ve 10 maddeye iliskin madde puanlari seklindedir. -- - Fonksiyon kullanimi bu uyari alinabilir (End Of Line EOL). -- - Amaci okunmak istenilen dosyanin tam olup olmadigi konusunda kullaniciyi uyarmaktir. -- - Her bir değişkenin genişliği widths argümani ile belirtilmelidir. -- - Dosyada sutun başliklari yer almiyorsa header argümaninin FALSE olan olağan değeri değiştirilmeden kullanilabilir. ```r verifwf <- read.fwf("fwf.txt", widths=c(1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)) head(verifwf,3) ``` ``` ## V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 ## 1 1 689 A 1 0 1 0 1 0 1 0 1 0 ## 2 2 654 B 1 1 1 1 0 1 0 1 0 1 ## 3 3 436 A 1 0 1 0 1 1 1 1 1 1 ``` --- ## read.fwf() ```r head(verifwf,3) ``` ``` ## V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 ## 1 1 689 A 1 0 1 0 1 0 1 0 1 0 ## 2 2 654 B 1 1 1 1 0 1 0 1 0 1 ## 3 3 436 A 1 0 1 0 1 1 1 1 1 1 ``` - header=FALSE değeri ile okunan dosyada değişken isimleri olağan olarak V1, V2, V3, degistirmek isterse ´col.names´ argümani kullanilabilir. ```r verifwf <- read.fwf("fwf.txt", widths=c(1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), col.names=c("sira", "no", "kitapcik", "m1", "m2", "m3", "m4", "m5", "m6", "m7", "m8", "m9", "m10")) head(verifwf,3) ``` ``` ## sira no kitapcik m1 m2 m3 m4 m5 m6 m7 m8 m9 m10 ## 1 1 689 A 1 0 1 0 1 0 1 0 1 0 ## 2 2 654 B 1 1 1 1 0 1 0 1 0 1 ## 3 3 436 A 1 0 1 0 1 1 1 1 1 1 ``` --- ## read.table() - "veri1.txt" dosyasinin okunmasi komut ve menu ile okunmasi -- - ilk olarak okunacak dosyanin text editorunde incelenmelidir. -- - ```r veritxt <- read.table("veri1.txt", header=TRUE, sep=";", dec=",") veritxt ``` ``` ## no m_1 m_2 m_3 m_4 m_5 ## 1 522 12 14.0 16 20.0 10 ## 2 222 5 NA 20 10.0 10 ## 3 454 5 10.2 6 4.0 10 ## 4 567 10 20.0 NA 12.2 20 ``` --- ## read.csv() ```r # "veri1.csv" dosyasinin read.csv2() fonksiyonu ile okunmasi vericsv <- read.csv("veri1.csv",dec=",") vericsv ``` ``` ## no m_1 m_2 m_3 m_4 m_5 ## 1 522 12 14.0 16 20.0 10 ## 2 222 5 NA 20 10.0 10 ## 3 454 5 10.2 6 4.0 10 ## 4 567 10 20.0 NA 12.2 20 ``` --- ## read.csv() - Satir ve sütun isimleri verilerek dosya okunmasi ```r vericsv_1<- read.csv("veri1.csv", row.names=c("001", "002", "003", "004"), col.names=c("No", "M1", "M2", "M3", "M4", "M5")) vericsv_1 ``` ``` ## No M1 M2 M3 M4 M5 ## 001 522 12 14 16 20 10 ## 002 222 5 <NA> 20 10 10 ## 003 454 5 10,2 6 4 10 ## 004 567 10 20 NA 12,2 20 ``` --- ## read.csv - veri okunurken sutun ya da satir haric tutulabilir. ```r vericsv_2 <- read.csv("veri1.csv", row.names=c("001", "002", "003","004"), col.names=c("No", "M1", "M2", "M3", "M4", "M5"))[,-1] vericsv_2 ``` ``` ## M1 M2 M3 M4 M5 ## 001 12 14 16 20 10 ## 002 5 <NA> 20 10 10 ## 003 5 10,2 6 4 10 ## 004 10 20 NA 12,2 20 ``` --- ## İnternet Ortamindan Veri Okunmasi https://www.statmodel.com/usersguide/chap3/ex3.1.dat ```r # "ex3.1.dat" veri seti internet sayfasından liste olarak okunması ex3_1 <- scan("https://www.statmodel.com/usersguide/chap3/ex3.1.dat", what=list(y1=0, x1=0, x3=0)) # y1 değişkeni için ilk 10 bireye ilişkin verinin head() fonksiyonu ile # göterilmesi head(ex3_1$y1, n = 10) ``` ``` ## [1] -0.354517 0.561655 0.315551 3.347049 -0.122389 -0.251276 -0.517996 ## [8] 1.888854 0.461254 2.237483 ``` --- ## İnternet Ortamindan Veri Okunmasi "ex3.1.dat" veri seti internet sayfasından matris olarak okunması ```r ex3_2 <- matrix(scan("https://www.statmodel.com/usersguide/chap3/ex3.1.dat"), byrow=TRUE, ncol=3) # İlk bes bireye ilişkin verinin head() fonksiyonu ile okunması head(ex3_2, n = 5) ``` ``` ## [,1] [,2] [,3] ## [1,] -0.354517 0.573051 -0.175230 ## [2,] 0.561655 -0.368095 1.090042 ## [3,] 0.315551 -0.577052 0.425472 ## [4,] 3.347049 1.088520 1.149353 ## [5,] -0.122389 -0.694153 -0.766538 ``` Bu işlem `read.table()` fonksiyonu ile de yapilabilir. --- # readLines https://www.statmodel.com/usersguide/chap5/ex5.1.html ```r sonuc <- readLines("https://www.statmodel.com/usersguide/chap5/ex5.1.html ") sonuc[1:10] ``` ``` ## [1] "<HTML>" ## [2] "<HEAD>" ## [3] " <TITLE>Mplus User's Guide Examples</TITLE>" ## [4] "</HEAD>" ## [5] "<BODY TEXT=\"#000000\" BGCOLOR=\"#FFFFFF\" LINK=\"#0000EE\" VLINK=\"#551A8B\" ALINK=\"#FF0000\">" ## [6] "<PRE>" ## [7] "Mplus VERSION 8" ## [8] "MUTHEN & MUTHEN" ## [9] "04/10/2017 4:41 AM" ## [10] "" ``` - Oluşturulan "sonuc" nesnesi bir karakter vektörü olup vektörün her bir elemanı okunan dosyanın her bir satırına karşılık gelmektedir. Nesnenin kaç elemanlı olduğunun kontrol edilmelidir. ```r length(sonuc) ``` ``` ## [1] 195 ``` --- ## readLines -- - Oluşturulan nesnede sadece 116. elemanın yer aldığı CFI değeri ve 111. elemanın yer aldığı %90 güven araliginda RMSEA değeri çekilmek istensin. -- - `readlines` ile okunan vektörü tüm satırı tek bir karakter olarak okuduğu için bunu bölmek gerekir. -- - `strsplit()` fonksiyonunu karakter vektörü bölmek amacı ile kullanma -- ```r CFI <- strsplit(sonuc[116], " ")[[1]] CFI ``` ``` ## [1] "" "" "" "" "" "" "" "" "" ## [10] "" "CFI" "" "" "" "" "" "" "" ## [19] "" "" "" "" "" "" "" "" "" ## [28] "" "" "" "" "" "" "" "" "" ## [37] "" "" "" "" "" "" "1.000" ``` -- --- ## readLines - Oluşturulan "CFI" nesnesinden değerlerin seçilerek sayısal türe dönüştürülerek icinden CFI değerinin çekilmesi ```r CFI <- strsplit(sonuc[116], " ")[[1]] CFI <-as.numeric(CFI[43]) CFI ``` ``` ## [1] 1 ``` --- ## readLines -- - Aynı işlemler ile RMSEA değerinin elde edilmesi -- ```r RMSEA <- strsplit(sonuc[111], " ")[[1]] RMSEA <-as.numeric(c(RMSEA[33], RMSEA[35])) RMSEA ``` ``` ## [1] 0.000 0.027 ``` -- --- ## ".Rdata" ```r save(verifwf, veritxt, vericsv, file="veri.RData") rm(list=ls()) ``` --- ## ".Rdata"yuklenmesi ```r # load ls() ``` ``` ## character(0) ``` --- ## Diger veri okuma fonksiyonlari - R'a excel dosyalarini aktarabilmek icin `"xlsReadWrite"` veya `"xlsx" `paketleri gereklidir. - R kullanicilari Excel dosyalari ile calismayi cok tercih etmese de, bazi durumlarda gerekli olabilir. - Cok sayida farkli formatta veri okuyabilen diger bir veri okuma paketi `"foreign"` paketidir. - SPSS, SAS ve STATA dosyalarini okumak icin ise `"haven"` paketinden sirasi ile `read_sav()`, `read_sas()` ve `read_stata()` fonksiyonlarini kullanmaktadir.