class: center, middle, inverse, title-slide # 💪 4005 R ile Büyük Veri Analitiği ##
📊 Veri Manipulasyonu_05 ###
👩🏫 Dr. Kübra ATALAY KABASAKAL
Hacettepe Üniversitesi ### 20/12/2021
📧
katalay@hacettepe.edu.tr
--- layout: true <div class="my-footer"> <span> - Dr. Kübra Atalay Kabasakal </span> </div> --- # Veri Formatı Degiştirme .huge[📊] .hand[İçerik...] - **tiydr** paketi - **gather()** fonksiyonu - **separete()** fonksiyonu - **spread()** fonksiyonu - **unite()** fonksiyonu --- ## Veriyi İnceleme - Bir veriyi R ortamamına aktardıktan sonra - Veri setinizde yer alan tüm satırlar/sütunlar doğru bir şekilde aktarılmış mı? - Sütun isimleri düzgün mü? - Özellikle sütun adlarında boşluk olması ya da farklı karakterler bulunması sıkıntı yaratabilir. --- ## Veriyi İnceleme - Aktarılan boş satır ve sütunlar var mı? - **filter()** ve **select()** gibi fonksiyonlarla incelebilir. - Eksik veriler nasıl temsil ediliyor? - **NA**,**" "** (bosluk), **.**, **999** , **9999** - eksik veriler **mutate()** ve **ifelse()** ile düzenlebilir. - character ve factor değişkenler düzgün tanımlanımış mı? --- .center[## Dağınık Veri] .pull-left-narrow[ | **Program** | **Kadın** | **Erkek**| |-----------------|----------:|---------:| | Olcme | 6 | 6 | | Program | 5 | 5 | | Yonetim | 7 | 8 | | PDR | 5 | 3 | ] .pull-right-wide[ - Gözlem nedir? - Her bir programda yer alan öğrencilerin cinsiyeti - Değişkenler nelerdir? - Program, Cinsiyet, Frekans - Değerler nelerdir? + Program: Olcme, Program, Yonetim, PDR + Cinsiyet: Kadın, Erkek - Bunların degisken değeri olması gerekiyor, sutun baslığı değil! + Frekans: ***Frekanslar iki sütuna dağılmış !!!** ] --- ## Düzgün Veri | **Program** | **Cinsiyet** | **Frekans** | |-----------------|-------------:|------------:| | Olcme | Kadın | 6 | | Olcme | Erkek | 6 | | Program | Kadın | 5 | | Program | Erkek | 5 | | Yonetim | Kadın | 7 | | Yonetim | Erkek | 8 | | PDR | Kadın | 5 | | PDR | Erkek | 3 | -- - Değişkenler sütunda -- - Gözlemler Satırlarda olmalıdır ! -- --- ## Düzgün Veri - Çok sayıda **satırı** anlamlandırmak, çok sayıda **sütunu** anlamlandırmaktan daha kolaydır. - **ggplot2**,**plotly**,**lattice** gibi paketleri rahat kullanabilmek için düzenli veri gereklidir. - hiyerarşik ve karma modeller için de verinin düzgün olması önemlidir. - Değişken adları mümkün olduğunca anlamlı olmalıdır. - Eksik değerler ve **dengesiz** tekrarlanan ölçüm verileriyle ilgili daha az sorun sağlar. --- ## Düzgün Veri - **tidyr** paketi **reshape** paketi gibi veri düzenlemede kullanılabilir. - **gather()**: bir dizi sütun alır ve onları iki yeni sütuna (kendi adını verebileceğin) dönüştürür. - A key: Orijinal sütun adlarını saklayan bir anahtar - A value: Bu orijinal sütunlardaki değerlere sahip bir değer. --- ## **gather()** fonksiyonu - Fonksiyonun kullanım şekli ```r gather(data, key, value, ..., na.rm = FALSE, convert = FALSE, factor_key = FALSE) ``` - Fonksiyonun kullanımı göstermek için veri seti oluşturma ```r n=20 genisveri <- data.frame( ID = paste("ID",101:120,sep=""), Sure_1 = sample(50:60,20,replace=TRUE), Sure_2 = sample(40:55,20,replace=TRUE), Sure_3 = sample(35:50,20,replace=TRUE) ) ``` --- ## **gather()** fonksiyonu ```r genisveri ``` ``` ## ID Sure_1 Sure_2 Sure_3 ## 1 ID101 59 42 38 ## 2 ID102 55 43 42 ## 3 ID103 54 54 50 ## 4 ID104 58 54 44 ## 5 ID105 54 52 45 ## 6 ID106 55 49 36 ## 7 ID107 53 44 39 ## 8 ID108 51 41 49 ## 9 ID109 56 53 40 ## 10 ID110 55 54 35 ## 11 ID111 59 47 40 ## 12 ID112 55 50 42 ## 13 ID113 53 43 37 ## 14 ID114 57 55 40 ## 15 ID115 53 51 35 ## 16 ID116 53 42 47 ## 17 ID117 54 46 50 ## 18 ID118 57 48 35 ## 19 ID119 53 42 43 ## 20 ID120 57 45 42 ``` --- ## **gather()** - gather() fonksiyonu geniş veriyi, uzun veri haline getirir. ```r uzun <- genisveri %>% gather(Sure, Zaman, Sure_1:Sure_3) ``` - Olusan veride Sure_1,Sure_2 ve Sure_3, Sure değişkenin değerleri haline geldi. --- ## **gather()** ```r uzun %>% head(3) ``` ``` ## ID Sure Zaman ## 1 ID101 Sure_1 59 ## 2 ID102 Sure_1 55 ## 3 ID103 Sure_1 54 ``` ```r uzun %>% tail(3) ``` ``` ## ID Sure Zaman ## 58 ID118 Sure_3 35 ## 59 ID119 Sure_3 43 ## 60 ID120 Sure_3 42 ``` - Gördüğünüz gibi, şimdi iki sütunumuz var: Biri *Sure* için, diğeri **Zaman** için. Her katılımcı icin üc farkli süre degeri olduğu için her bir ID değeri üç kere tekrarlamaktadır. --- ## **separate()** - **separate()** bir sütunu birden çok sütuna ayırır. - değerlerin sütun adlarına gömüldüğü toplanmış verilerde ortaktır. - Olusan veride Sure_1,Sure_2 ve Sure_3 değerlerinin karakter ve sayısal değerlerini ayırmak için **separate():** fonkisyonu kullanabilirsiniz. ```r uzun_ayrı <- uzun %>% separate(Sure, c("Sure","Sayı"),"_") uzun_ayrı %>% head(3) ``` ``` ## ID Sure Sayı Zaman ## 1 ID101 Sure 1 59 ## 2 ID102 Sure 1 55 ## 3 ID103 Sure 1 54 ``` --- ## **unite()** fonksiyonu - **gather*()** fonksiyonun tam tersi olarak iki sütunu alıp tek sutunda birlestirir. ```r uzun_birles <- uzun_ayrı %>% unite(SURE, Sure, Sayı, sep = ".") uzun_birles %>% head(3) ``` ``` ## ID SURE Zaman ## 1 ID101 Sure.1 59 ## 2 ID102 Sure.1 55 ## 3 ID103 Sure.1 54 ``` --- ## **spread()** fonksiyonu - **spread():** **gather*()** fonksiyonun tam tersini yaparak uzun veriden genis veri olusturmaya yarar. ```r tekrar_genis <- uzun_birles %>% spread(SURE, Zaman) tekrar_genis ``` ``` ## ID Sure.1 Sure.2 Sure.3 ## 1 ID101 59 42 38 ## 2 ID102 55 43 42 ## 3 ID103 54 54 50 ## 4 ID104 58 54 44 ## 5 ID105 54 52 45 ## 6 ID106 55 49 36 ## 7 ID107 53 44 39 ## 8 ID108 51 41 49 ## 9 ID109 56 53 40 ## 10 ID110 55 54 35 ## 11 ID111 59 47 40 ## 12 ID112 55 50 42 ## 13 ID113 53 43 37 ## 14 ID114 57 55 40 ## 15 ID115 53 51 35 ## 16 ID116 53 42 47 ## 17 ID117 54 46 50 ## 18 ID118 57 48 35 ## 19 ID119 53 42 43 ## 20 ID120 57 45 42 ``` --- <br> .hand-large[teşekkürler !] --