class: center, middle, inverse, title-slide # Veri Okuma ## scan() 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 -- - `scan()` -- - `read.*` -- - `read.table()` -- - `read.csv()` -- - `read.csv2()` -- - `read.delim()` -- - `read.delim2()` -- - `readLines()` -- --- ## Veri Okuma -- - Verinin duzgun girilmis olmasi okumayi kolaylastirir. -- - Ilk satirda genellikle degisken adlarina (header), ilk sutunda ise kimlik veya sira numarasina yer verilir. -- - Gozlemlere ve degiskenlere iliskin veri girilirken karakterler veya sayisal degerler arasinda bosluk birakmaktan kacinmak gerekmektedir. -- - Degisken adi bosluklu yazilmissa ne olur? -- --- ## Veri Okuma -- - Eksik veri veri boyunca ayni sekilde girilmelidir. -- - Degiskenlerin birinden nasil ayrildigi onemlidir. (, ; : \ / ) -- - Tercihimiz .csv uzantili veriler ama buyuk veri setleri az yer kalamasi icin .txt,.prn formatinda karsimiza cikabilmektedir. -- --- ## scan() - **scan()** fonksiyonu argumansiz da çalışabilir. ```r # Sayisal bir x vektoru olusturulmasi x <- scan() ``` -- - **scan()** fonksiyonu ile karakter bir y vektoru olusturulmasi ```r y <- scan() y <- scan(,what="character") ``` --- ## scan() - **scan()** fonksiyonu fare ile kopyalanan datayi okuma ```r scan("clipboard") ``` --- ## scan() fonksiyonu ile txt okunmasi - `"df.txt"` dosyasi nerede ise calisma dizini oraya ayarlanabilir ya da dosya adresi ile okunabilir - Dosya çalışma dizininde kayıtlı olduğunda okunması ```r scan("df.txt", what="character") ``` ``` ## [1] "Ali" "160" "50" "S" "Elif" "165" "55" "M" "Su" ## [10] "170" "57" "S" "Deniz" "155" "50" "M" "Aras" "167" ## [19] "48" "S" "Berk" "162" "65" "L" "Can" "169" "58" ## [28] "M" "Ece" "158" "62" "L" "Efe" "160" "45" "S" ## [37] "Arda" "164" "47" "S" ``` --- ## scan() fonksiyonu ile txt okunmasi - Dosyanin bulunduğu yerin **file.choose()** fonksiyonu ile açılması ```r scan(file.choose(), what="character") ``` --- ## scan() fonksiyonu ile txt okunmasi - Dosyanin bulunduğu yerin adresi belirtilerek okunmasi -- - R’da **\** işaretinin farklı bir anlamı bulunmaktadır. -- ```r scan("D:\df.txt", what="character") hata verir. ``` ``` ## Error: '\d' is an unrecognized escape in character string starting ""D:\d" ``` --- ## scan() fonksiyonu ile txt okunmasi - Dosyanın adı adresiyle birlikte "/" veya "\\" işaretleri ile yazılarak girilir. -- ```r # iki tane \\ df1 <- scan("D:\\df.txt", what="character") ## ya da ters / df2 <- scan("D:/df.txt", what="character") ``` --- ## scan() fonksiyonu ile txt okunmasi **scan()** fonksiyonu ile olusan ciktilar vektordur ve kullanisli degildir. Bu ciktilari listeye ya da veri setine donusturebiliriz. ```r scan("df.txt", what="character") ``` ``` ## [1] "Ali" "160" "50" "S" "Elif" "165" "55" "M" "Su" ## [10] "170" "57" "S" "Deniz" "155" "50" "M" "Aras" "167" ## [19] "48" "S" "Berk" "162" "65" "L" "Can" "169" "58" ## [28] "M" "Ece" "158" "62" "L" "Efe" "160" "45" "S" ## [37] "Arda" "164" "47" "S" ``` --- ## scan() fonksiyonu ile txt okunmasi **scan()** fonksiyonu çıktının liste olarak elde edilmesi ```r scan("df.txt", skip=1, what=list( ad="character", boy=integer(), kilo=integer(),beden="character")) ``` ``` ## $ad ## [1] "Elif" "Su" "Deniz" "Aras" "Berk" "Can" "Ece" "Efe" "Arda" ## ## $boy ## [1] 165 170 155 167 162 169 158 160 164 ## ## $kilo ## [1] 55 57 50 48 65 58 62 45 47 ## ## $beden ## [1] "M" "S" "M" "S" "L" "M" "L" "S" "S" ``` --- ## scan() fonksiyonu ile txt okunmasi **scan()** fonksiyonu çıktının veri seti olarak elde edilmesi ```r # veri seti as.data.frame(scan("df.txt", skip=1, what=list(ad="character",boy=0, kilo=0, beden="character"))) ``` ``` ## ad boy kilo beden ## 1 Elif 165 55 M ## 2 Su 170 57 S ## 3 Deniz 155 50 M ## 4 Aras 167 48 S ## 5 Berk 162 65 L ## 6 Can 169 58 M ## 7 Ece 158 62 L ## 8 Efe 160 45 S ## 9 Arda 164 47 S ```