class: center, middle, inverse, title-slide # 💪 4005 R ile Büyük Veri Analitiği ##
📉 Veri Manipulasyonu_04 ###
👩🏫 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> --- # join data .huge[📊] .hand[İçerik...] - **join()** fonksiyonlari - **left_join()** - **right_join()** - **full_join()** - **inner_join()** - **semi_join()** - **anti_join()** --- ## **join()** fonksiyonu - **join()** fonksiyonları iki veri setini istenilen şekilde birleştirme amacıyla kullanılırlar. - **A** ve **B** veri setlerini birleştirmek istediğimizde - Her iki veri setinden de hangi **satırları** almak istiyoruz? - Her iki veri setinden de hangi **sütunları** almak istiyoruz? - Satırların **eşleşip eşleşmeyeceğini** hangi değişkenlerle belirleyeceğiz? --- ## Join Türleri Çok sayıda **join()** fonksiyonu bulunmaktadır. <sup>1</sup>... .pull-left[ - **A %>% left_join(B)** <br> `A` dan tüm satırları, mümkün olduğunda `B` ile eşleştir (olmadığında "NA" verir), hem `A` hem de `B` den gelen sütunları alır. <img src="img/left_join.PNG" width="75%" style="display: block; margin: auto;" /> ] -- .pull-right[ - **A %>% right_join(B)** <br> `B` den tüm satırları, mümkün olduğunda `A` ile eşleştir (olmadığında "NA" verir), hem `A` hem de `B` den gelen sütunları alır. <img src="img/right_join.PNG" width="75%" style="display: block; margin: auto;" /> - .small[[1] Pratikte genellike **left_join()** kullanılır.] ] --- ## Join Türleri <br> .pull-left[ - **A %>% inner_join(B)** <br> yanlızca `A` ve `B` nin eşleşen satırlarını birleştirir. Hem `A` hem de `B` den gelen sütunları alır. <img src="img/inner_join.PNG" width="75%" style="display: block; margin: auto;" /> ] -- .pull-right[ - **A %>% full_join(B)** <br> `A` ve `B` den tüm satırları birleştirir. Hem `A` hem de `B` den gelen sütunları alır. <img src="img/full_join.PNG" width="75%" style="display: block; margin: auto;" /> ] --- ## Join Türleri .pull-left[ <br> - **A %>% semi_join(B)** <br> `A` nın `B` ile eşleşen satırlarını alır. Sadece `A` dan gelen sütunları alır. <img src="img/semi_join.PNG" width="75%" style="display: block; margin: auto;" /> ] -- .pull-right[ <br> - **A %>% anti_join(B)** <br> `A` nın `B` ile eşleşemeyen satırlarını alır. Sadece `A` dan gelen sütunları alır. <img src="img/anti_join.PNG" width="75%" style="display: block; margin: auto;" /> ] --- ## Join Türleri - Aynı değerleri içeren satırların olduğu sütunların *eşleşmesi* gerektiğini söylüyoruz. - Bunları birleştirme için bir **by =** argümanını kullanıyoruz. - Eğer birleştirme yapmak istediğimiz sütun/ların isimleri aynı ise **by =** argümanını kullanmaya gerek yoktur. --- .center[## left_join & right_join] .pull-left[ cinsiyet1 ```r cinsiyet1 ``` ``` ## ogrenci cinsiyet ## 1 Mert Kaya Erkek ## 2 Zeynep Turan Kiz ## 3 Zeynep Inal Kiz ``` ] .pull-right[ kangrubu1 ```r kangrubu1 ``` ``` ## ogrenci kangrubu ## 1 Zeynep Turan A Rh(-) ## 2 Zeynep Inal 0 Rh (+) ## 3 Can Eser ARh(+) ``` ] .pull-left[ ```r left_join(cinsiyet1,kangrubu1) ``` ``` ## Joining, by = "ogrenci" ``` ``` ## ogrenci cinsiyet kangrubu ## 1 Mert Kaya Erkek <NA> ## 2 Zeynep Turan Kiz A Rh(-) ## 3 Zeynep Inal Kiz 0 Rh (+) ``` ] .pull-right[ ```r right_join(cinsiyet1,kangrubu1) ``` ``` ## Joining, by = "ogrenci" ``` ``` ## ogrenci cinsiyet kangrubu ## 1 Zeynep Turan Kiz A Rh(-) ## 2 Zeynep Inal Kiz 0 Rh (+) ## 3 Can Eser <NA> ARh(+) ``` ] --- .center[## inner_join & full_join] .pull-left[ cinsiyet1 ```r cinsiyet1 ``` ``` ## ogrenci cinsiyet ## 1 Mert Kaya Erkek ## 2 Zeynep Turan Kiz ## 3 Zeynep Inal Kiz ``` ] .pull-right[ kangrubu1 ```r kangrubu1 ``` ``` ## ogrenci kangrubu ## 1 Zeynep Turan A Rh(-) ## 2 Zeynep Inal 0 Rh (+) ## 3 Can Eser ARh(+) ``` ] .pull-left[ ```r inner_join(cinsiyet1,kangrubu1) ``` ``` ## Joining, by = "ogrenci" ``` ``` ## ogrenci cinsiyet kangrubu ## 1 Zeynep Turan Kiz A Rh(-) ## 2 Zeynep Inal Kiz 0 Rh (+) ``` ] .pull-right[ ```r full_join(cinsiyet1,kangrubu1) ``` ``` ## Joining, by = "ogrenci" ``` ``` ## ogrenci cinsiyet kangrubu ## 1 Mert Kaya Erkek <NA> ## 2 Zeynep Turan Kiz A Rh(-) ## 3 Zeynep Inal Kiz 0 Rh (+) ## 4 Can Eser <NA> ARh(+) ``` ] --- .center[## semi_join & anti_join] .pull-left[ cinsiyet1 ```r cinsiyet1 ``` ``` ## ogrenci cinsiyet ## 1 Mert Kaya Erkek ## 2 Zeynep Turan Kiz ## 3 Zeynep Inal Kiz ``` ] .pull-right[ kangrubu1 ```r kangrubu1 ``` ``` ## ogrenci kangrubu ## 1 Zeynep Turan A Rh(-) ## 2 Zeynep Inal 0 Rh (+) ## 3 Can Eser ARh(+) ``` ] .pull-left[ ```r semi_join(cinsiyet1,kangrubu1) ``` ``` ## Joining, by = "ogrenci" ``` ``` ## ogrenci cinsiyet ## 1 Zeynep Turan Kiz ## 2 Zeynep Inal Kiz ``` ] .pull-right[ ```r anti_join(cinsiyet1,kangrubu1) ``` ``` ## Joining, by = "ogrenci" ``` ``` ## ogrenci cinsiyet ## 1 Mert Kaya Erkek ``` ] --- .center[## by argumani] .pull-left[ cinsiyet1 ```r cinsiyet2 ``` ``` ## ogrenci cinsiyet ## 1 Mert Kaya Erkek ## 2 Zeynep Turan Kiz ## 3 Zeynep Inal Kiz ``` ] .pull-right[ kangrubu1 ```r kangrubu2 ``` ``` ## ad kangrubu ## 1 Zeynep Turan A Rh(-) ## 2 Zeynep Inal 0 Rh (+) ## 3 Can Eser ARh(+) ``` ] .pull-left[ ```r cinsiyet2 %>% left_join(kangrubu2,by=c("ogrenci"="ad")) ``` ``` ## ogrenci cinsiyet kangrubu ## 1 Mert Kaya Erkek <NA> ## 2 Zeynep Turan Kiz A Rh(-) ## 3 Zeynep Inal Kiz 0 Rh (+) ``` ] .pull-right[ ```r kangrubu2 %>% left_join(cinsiyet2,by=c("ad"="ogrenci")) ``` ``` ## ad kangrubu cinsiyet ## 1 Zeynep Turan A Rh(-) Kiz ## 2 Zeynep Inal 0 Rh (+) Kiz ## 3 Can Eser ARh(+) <NA> ``` ] --- .center[## Kume Islemleri] .pull-left[ <img src="img/kumeislemleri.png" width="70%" style="display: block; margin: auto;" /> ] .pull-right[ ```r intersect(1:5, 4:8) ``` ``` ## [1] 4 5 ``` ```r union(1:5, 4:8) ``` ``` ## [1] 1 2 3 4 5 6 7 8 ``` ```r setdiff(1:5, 4:8) ``` ``` ## [1] 1 2 3 ``` ```r setdiff(4:8, 1:5) ``` ``` ## [1] 6 7 8 ``` ] --- ## Aynı değisken adlari ```r intersect(names(PISA_STU_2018), names(PISA_SCH_2018)) ``` ``` ## [1] "CNTRYID" "CNT" "CNTSCHID" "CYC" "NatCen" "STRATUM" ## [7] "SUBNATIO" "OECD" "ADMINMODE" "BOOKID" "SENWT" "VER_DAT" ``` ```r intersect(names(PISA_STU_2018), names(PISA_COG_2018)) ``` ``` ## [1] "CNTRYID" "CNT" "CNTSCHID" "CNTSTUID" "CYC" ## [6] "NatCen" "STRATUM" "SUBNATIO" "OECD" "ADMINMODE" ## [11] "LANGTEST_QQQ" "LANGTEST_COG" "LANGTEST_PAQ" "BOOKID" "VER_DAT" ``` --- ## join ```r miniOGR <- PISA_OGR_2018 %>% select(OKULID,OGRENCIID,CINSIYET,KITAPSAYISI,ST196Q02HA:ST196Q07HA) miniOGR %>% head(2) ``` ``` ## # A tibble: 2 x 10 ## OKULID OGRENCIID CINSIYET KITAPSAYISI ST196Q02HA ST196Q03HA ST196Q04HA ## <dbl> <dbl> <dbl+lbl> <dbl+lbl> <dbl+lbl> <dbl+lbl> <dbl+lbl> ## 1 79200001 79200768 2 [Erkek] 2 [11-25 kitap] 3 [Biraz ~ 3 [Biraz ~ 4 [Bunu k~ ## 2 79200001 79201064 2 [Erkek] 3 [26-100 kitap] 3 [Biraz ~ 3 [Biraz ~ 4 [Bunu k~ ## # ... with 3 more variables: ST196Q05HA <dbl+lbl>, ST196Q06HA <dbl+lbl>, ## # ST196Q07HA <dbl+lbl> ``` ```r miniSCH <- PISA_SCH_2015 %>% select(CNTSCHID,okulbuyukluk = SCHSIZE,sinifbuyuk= CLSIZE) miniSCH %>% head(2) ``` ``` ## # A tibble: 2 x 3 ## CNTSCHID okulbuyukluk sinifbuyuk ## <dbl> <dbl+lbl> <dbl+lbl> ## 1 79200001 500 53 ## 2 79200003 1078 33 ``` --- ## join - veri setinde eslestirme yapılması istenilen değişkenin farklı adları oldugunda ```r left_join(miniOGR,miniSCH,by=c("OKULID"="CNTSCHID")) ``` ``` ## # A tibble: 6,890 x 12 ## OKULID OGRENCIID CINSIYET KITAPSAYISI ST196Q02HA ST196Q03HA ST196Q04HA ## <dbl> <dbl> <dbl+lbl> <dbl+lbl> <dbl+lbl> <dbl+lbl> <dbl+lbl> ## 1 79200001 79200768 2 [Erkek] 2 [11-25 ki~ 3 [Biraz c~ 3 [Biraz c~ 4 [Bunu ko~ ## 2 79200001 79201064 2 [Erkek] 3 [26-100 k~ 3 [Biraz c~ 3 [Biraz c~ 4 [Bunu ko~ ## 3 79200001 79201118 1 [Kiz] 1 [0-10 kit~ 1 [Bunu ya~ 2 [Bunu te~ 3 [Biraz c~ ## 4 79200001 79201275 2 [Erkek] 1 [0-10 kit~ 1 [Bunu ya~ 1 [Bunu ya~ 1 [Bunu ya~ ## 5 79200001 79201481 2 [Erkek] 2 [11-25 ki~ 1 [Bunu ya~ 4 [Bunu ko~ 4 [Bunu ko~ ## 6 79200001 79201556 2 [Erkek] 2 [11-25 ki~ 1 [Bunu ya~ 1 [Bunu ya~ 1 [Bunu ya~ ## 7 79200001 79201652 1 [Kiz] 3 [26-100 k~ 3 [Biraz c~ 3 [Biraz c~ 3 [Biraz c~ ## 8 79200001 79202033 2 [Erkek] 3 [26-100 k~ 3 [Biraz c~ 2 [Bunu te~ 4 [Bunu ko~ ## 9 79200001 79202179 1 [Kiz] 3 [26-100 k~ 3 [Biraz c~ 1 [Bunu ya~ 4 [Bunu ko~ ## 10 79200001 79202278 2 [Erkek] 4 [101-200 ~ 3 [Biraz c~ 3 [Biraz c~ 1 [Bunu ya~ ## # ... with 6,880 more rows, and 5 more variables: ST196Q05HA <dbl+lbl>, ## # ST196Q06HA <dbl+lbl>, ST196Q07HA <dbl+lbl>, okulbuyukluk <dbl+lbl>, ## # sinifbuyuk <dbl+lbl> ``` --- <br> <br> <br> - konu ile ilgili daha fazla alıştırma için [adresini](https://rpubs.com/williamsurles/293454) inceleyebilirsiniz. .hand-large[teşekkürler !] --