Bölüm 7 Veri Düzenleme

Veri düzenleme, başlı başına üzerinde uzmanlaşılması gereken ayrı bir konudur. R’a aktarılan veriler ile analizler gerçekleştirmeden önce genellikle verinin düzenlenmesi gerekir. Bu düzenleme (manipülasyon) pek çok anlama gelebilir. Bu aşamada veri seti alt veri setlerine ayrılabilir, verinin bir bölümü seçilebilir, veri başka veriler ile birleştirilebilir… Veri düzenleme, veri analizi ve görselleştirme için önemli bir konu olduğu için pek çok kişi bu konuya kafa yormuştur ve R’da veri düzenleme yaparken kullanılmak üzere pek çok paket geliştirilmiştir. Bu bölümde Wickham, François, Henry, Müller ve Vaughan (2023) tarafından geliştirilmiş olan dplyr paketindeki fonksiyonlardan yararlanılacaktır. Bu kapsamlı ve oldukça kullanışlı paket hakkında detaylı bilgiye ulaşmak için buraya tıklayabilirsiniz. Paketi indirmek için öncelikle install.packages("dplyr") komutunu çalıştırıyoruz, ardından aşağıdaki komut ile paketi çalışır hale getiriyoruz.

library(dplyr)

Örnek uygulama için bize bir veri seti lazım. Bu noktada ‘İçe ve Dışa Aktarma’ bölümünde gördüğümüz fonksiyonlardan yararlanarak internetteki bir veri setini içe aktaralım. Bu veri seti Türkiye’deki ilköğretim ve ortaöğretim öğrenci istatistiklerini içermektedir. 357 değişkenden ve 81 satırdan (iller) oluşmaktadır. Değişken isimleri ile ilgili açıklamalara buraya tıklayarak ulaşabilirsiniz.

library(readr)
TR_stu <- read_csv("https://raw.githubusercontent.com/gungorMetehan/TREduData/main/TREduData_student.csv")

İndirilen veri seti, R’a TR_stu olarak kaydedilmiştir. Veri setine genel bir bakış atmak için glimpse() fonksiyonundan yararlanılabilir.

glimpse(TR_stu)
## Rows: 81
## Columns: 357
## $ gadm_L3number              <dbl> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, …
## $ plate_number               <dbl> 1, 2, 3, 4, 68, 5, 6, 7, 75, 8, 9, 10, 74, …
## $ province_upper             <chr> "ADANA", "ADIYAMAN", "AFYONKARAHISAR", "AGR…
## $ NUTS_level1                <chr> "TR6", "TRC", "TR3", "TRA", "TR7", "TR8", "…
## $ NUTS_level1_name           <chr> "Akdeniz", "Guneydogu Anadolu", "Ege", "Kuz…
## $ NUTS_level2                <chr> "TR62", "TRC1", "TR33", "TRA2", "TR71", "TR…
## $ metropolitan               <dbl> 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0…
## $ student_s_pre_m_21_22      <dbl> 22426, 8659, 6466, 6835, 3844, 3048, 38750,…
## $ student_s_pre_f_21_22      <dbl> 21309, 8078, 6157, 6514, 3536, 2931, 37294,…
## $ student_s_pre_total_21_22  <dbl> 43735, 16737, 12623, 13349, 7380, 5979, 760…
## $ student_p_pre_m_21_22      <dbl> 4215, 766, 1066, 219, 584, 656, 19411, 1009…
## $ student_p_pre_f_21_22      <dbl> 3557, 583, 920, 232, 437, 545, 16747, 8675,…
## $ student_p_pre_total_21_22  <dbl> 7772, 1349, 1986, 451, 1021, 1201, 36158, 1…
## $ student_pre_total_21_22    <dbl> 51507, 18086, 14609, 13800, 8401, 7180, 112…
## $ student_s_pre_m_20_21      <dbl> 13712, 5955, 5017, 5733, 3554, 2498, 20326,…
## $ student_s_pre_f_20_21      <dbl> 12587, 5578, 4673, 5328, 3309, 2306, 19057,…
## $ student_s_pre_total_20_21  <dbl> 26299, 11533, 9690, 11061, 6863, 4804, 3938…
## $ student_p_pre_m_20_21      <dbl> 2441, 278, 586, 94, 291, 279, 10256, 5700, …
## $ student_p_pre_f_20_21      <dbl> 2048, 209, 524, 100, 258, 229, 8556, 5025, …
## $ student_p_pre_total_20_21  <dbl> 4489, 487, 1110, 194, 549, 508, 18812, 1072…
## $ student_pre_total_20_21    <dbl> 30788, 12020, 10800, 11255, 7412, 5312, 581…
## $ student_s_pre_m_19_20      <dbl> 19912, 6443, 5993, 5973, 3541, 3117, 37221,…
## $ student_s_pre_f_19_20      <dbl> 18399, 6140, 5640, 5725, 3422, 2819, 35194,…
## $ student_s_pre_total_19_20  <dbl> 38311, 12583, 11633, 11698, 6963, 5936, 724…
## $ student_p_pre_m_19_20      <dbl> 3272, 516, 680, 111, 331, 423, 15127, 8071,…
## $ student_p_pre_f_19_20      <dbl> 2796, 461, 611, 121, 302, 376, 13316, 7016,…
## $ student_p_pre_total_19_20  <dbl> 6068, 977, 1291, 232, 633, 799, 28443, 1508…
## $ student_pre_total_19_20    <dbl> 44379, 13560, 12924, 11930, 7596, 6735, 100…
## $ student_s_pre_m_18_19      <dbl> 19789, 6753, 6098, 6299, 3598, 3019, 34095,…
## $ student_s_pre_f_18_19      <dbl> 18196, 6104, 5605, 5799, 3358, 2784, 31968,…
## $ student_s_pre_total_18_19  <dbl> 37985, 12857, 11703, 12098, 6956, 5803, 660…
## $ student_p_pre_m_18_19      <dbl> 3166, 314, 660, 114, 300, 376, 13545, 6663,…
## $ student_p_pre_f_18_19      <dbl> 2676, 283, 548, 86, 261, 315, 12145, 5961, …
## $ student_p_pre_total_18_19  <dbl> 5842, 597, 1208, 200, 561, 691, 25690, 1262…
## $ student_pre_total_18_19    <dbl> 43827, 13454, 12911, 12298, 7517, 6494, 917…
## $ student_s_pre_m_17_18      <dbl> 19202, 6494, 5898, 6151, 3678, 3082, 32103,…
## $ student_s_pre_f_17_18      <dbl> 17816, 5988, 5436, 5650, 3404, 2856, 30025,…
## $ student_s_pre_total_17_18  <dbl> 37018, 12482, 11334, 11801, 7082, 5938, 621…
## $ student_p_pre_m_17_18      <dbl> 2881, 304, 570, 61, 293, 324, 12818, 6003, …
## $ student_p_pre_f_17_18      <dbl> 2487, 263, 540, 48, 291, 319, 11515, 5246, …
## $ student_p_pre_total_17_18  <dbl> 5368, 567, 1110, 109, 584, 643, 24333, 1124…
## $ student_pre_total_17_18    <dbl> 42386, 13049, 12444, 11910, 7666, 6581, 864…
## $ student_s_pre_m_16_17      <dbl> 18966, 5807, 5738, 4999, 3378, 2849, 30422,…
## $ student_s_pre_f_16_17      <dbl> 17284, 5325, 5143, 4483, 3247, 2606, 28017,…
## $ student_s_pre_total_16_17  <dbl> 36250, 11132, 10881, 9482, 6625, 5455, 5843…
## $ student_p_pre_m_16_17      <dbl> 2420, 314, 538, 61, 278, 265, 12137, 5200, …
## $ student_p_pre_f_16_17      <dbl> 2130, 238, 508, 67, 249, 219, 10586, 4397, …
## $ student_p_pre_total_16_17  <dbl> 4550, 552, 1046, 128, 527, 484, 22723, 9597…
## $ student_pre_total_16_17    <dbl> 40800, 11684, 11927, 9610, 7152, 5939, 8116…
## $ student_s_pre_m_15_16      <dbl> 16482, 5214, 5038, 4843, 3041, 2557, 27678,…
## $ student_s_pre_f_15_16      <dbl> 14778, 4610, 4682, 4382, 2979, 2344, 25243,…
## $ student_s_pre_total_15_16  <dbl> 31260, 9824, 9720, 9225, 6020, 4901, 52921,…
## $ student_p_pre_m_15_16      <dbl> 1962, 267, 508, 68, 302, 285, 10800, 5275, …
## $ student_p_pre_f_15_16      <dbl> 1733, 225, 444, 61, 271, 244, 9533, 4576, 3…
## $ student_p_pre_total_15_16  <dbl> 3695, 492, 952, 129, 573, 529, 20333, 9851,…
## $ student_pre_total_15_16    <dbl> 34955, 10316, 10672, 9354, 6593, 5430, 7325…
## $ student_s_pre_m_14_15      <dbl> 14929, 4973, 4745, 4847, 3586, 2683, 19689,…
## $ student_s_pre_f_14_15      <dbl> 13356, 4615, 4322, 4485, 3203, 2443, 17756,…
## $ student_s_pre_total_14_15  <dbl> 28285, 9588, 9067, 9332, 6789, 5126, 37445,…
## $ student_p_pre_m_14_15      <dbl> 1169, 229, 411, 78, 176, 225, 1966, 10060, …
## $ student_p_pre_f_14_15      <dbl> 1033, 207, 362, 61, 153, 166, 1801, 9197, 4…
## $ student_p_pre_total_14_15  <dbl> 2202, 436, 773, 139, 329, 391, 3767, 19257,…
## $ student_pre_total_14_15    <dbl> 30487, 10024, 9840, 9471, 7118, 5517, 41212…
## $ student_s_pre_m_13_14      <dbl> 13915, 4564, 4628, 4468, 2774, 3082, 25893,…
## $ student_s_pre_f_13_14      <dbl> 12504, 4280, 4261, 3996, 2459, 2783, 23592,…
## $ student_s_pre_total_13_14  <dbl> 26419, 8844, 8889, 8464, 5233, 5865, 49485,…
## $ student_p_pre_m_13_14      <dbl> 1451, 186, 302, 52, 201, 153, 8382, 3492, 1…
## $ student_p_pre_f_13_14      <dbl> 1241, 166, 263, 40, 140, 143, 7773, 3182, 2…
## $ student_p_pre_total_13_14  <dbl> 2692, 352, 565, 92, 341, 296, 16155, 6674, …
## $ student_pre_total_13_14    <dbl> 29111, 9196, 9454, 8556, 5574, 6161, 65640,…
## $ student_s_pre_m_12_13      <dbl> 13603, 4970, 5074, 3932, 2901, 2973, 26462,…
## $ student_s_pre_f_12_13      <dbl> 12505, 4781, 4668, 3666, 2653, 2720, 24317,…
## $ student_s_pre_total_12_13  <dbl> 26108, 9751, 9742, 7598, 5554, 5693, 50779,…
## $ student_p_pre_m_12_13      <dbl> 1510, 130, 258, 45, 162, 129, 8069, 3070, 1…
## $ student_p_pre_f_12_13      <dbl> 1304, 133, 219, 27, 130, 146, 7472, 2831, 3…
## $ student_p_pre_total_12_13  <dbl> 2814, 263, 477, 72, 292, 275, 15541, 5901, …
## $ student_pre_total_12_13    <dbl> 28922, 10014, 10219, 7670, 5846, 5968, 6632…
## $ student_s_ele_m_21_22      <dbl> 84590, 25507, 21482, 24321, 13510, 8213, 14…
## $ student_s_ele_f_21_22      <dbl> 79911, 24008, 20148, 22980, 12926, 7544, 14…
## $ student_s_ele_total_21_22  <dbl> 164501, 49515, 41630, 47301, 26436, 15757, …
## $ student_p_ele_m_21_22      <dbl> 3322, 478, 542, 213, 425, 462, 19987, 7105,…
## $ student_p_ele_f_21_22      <dbl> 3068, 457, 527, 216, 374, 422, 18290, 6693,…
## $ student_p_ele_total_21_22  <dbl> 6390, 935, 1069, 429, 799, 884, 38277, 1379…
## $ student_ele_total_21_22    <dbl> 170891, 50450, 42699, 47730, 27235, 16641, …
## $ student_s_ele_m_20_21      <dbl> 83496, 25316, 21364, 25121, 13489, 8171, 14…
## $ student_s_ele_f_20_21      <dbl> 78811, 23695, 19972, 23576, 12912, 7529, 13…
## $ student_s_ele_total_20_21  <dbl> 162307, 49011, 41336, 48697, 26401, 15700, …
## $ student_p_ele_m_20_21      <dbl> 2933, 375, 456, 157, 347, 423, 17447, 5945,…
## $ student_p_ele_f_20_21      <dbl> 2678, 329, 440, 167, 318, 411, 16150, 5540,…
## $ student_p_ele_total_20_21  <dbl> 5611, 704, 896, 324, 665, 834, 33597, 11485…
## $ student_ele_total_20_21    <dbl> 167918, 49715, 42232, 49021, 27066, 16534, …
## $ student_s_ele_m_19_20      <dbl> 82441, 25027, 21275, 25442, 13498, 8012, 14…
## $ student_s_ele_f_19_20      <dbl> 77673, 23319, 19873, 23844, 12965, 7600, 13…
## $ student_s_ele_total_19_20  <dbl> 160114, 48346, 41148, 49286, 26463, 15612, …
## $ student_p_ele_m_19_20      <dbl> 3011, 325, 436, 174, 315, 458, 17977, 6373,…
## $ student_p_ele_f_19_20      <dbl> 2740, 281, 448, 166, 274, 391, 16489, 5702,…
## $ student_p_ele_total_19_20  <dbl> 5751, 606, 884, 340, 589, 849, 34466, 12075…
## $ student_ele_total_19_20    <dbl> 165865, 48952, 42032, 49626, 27052, 16461, …
## $ student_s_ele_m_18_19      <dbl> 81089, 25063, 21165, 26573, 13657, 8172, 14…
## $ student_s_ele_f_18_19      <dbl> 76875, 23615, 19972, 25399, 12959, 7708, 13…
## $ student_s_ele_total_18_19  <dbl> 157964, 48678, 41137, 51972, 26616, 15880, …
## $ student_p_ele_m_18_19      <dbl> 2935, 273, 471, 184, 330, 421, 17206, 5917,…
## $ student_p_ele_f_18_19      <dbl> 2702, 207, 451, 142, 269, 369, 15798, 5194,…
## $ student_p_ele_total_18_19  <dbl> 5637, 480, 922, 326, 599, 790, 33004, 11111…
## $ student_ele_total_18_19    <dbl> 163601, 49158, 42059, 52298, 27215, 16670, …
## $ student_s_ele_m_17_18      <dbl> 77503, 25137, 20584, 26643, 13352, 8179, 13…
## $ student_s_ele_f_17_18      <dbl> 73499, 23780, 19459, 25257, 12682, 7691, 13…
## $ student_s_ele_total_17_18  <dbl> 151002, 48917, 40043, 51900, 26034, 15870, …
## $ student_p_ele_m_17_18      <dbl> 2736, 241, 467, 180, 319, 341, 16078, 5140,…
## $ student_p_ele_f_17_18      <dbl> 2486, 176, 378, 126, 253, 297, 14688, 4467,…
## $ student_p_ele_total_17_18  <dbl> 5222, 417, 845, 306, 572, 638, 30766, 9607,…
## $ student_ele_total_17_18    <dbl> 156224, 49334, 40888, 52206, 26606, 16508, …
## $ student_s_ele_m_16_17      <dbl> 73890, 24417, 20457, 27028, 13069, 8129, 13…
## $ student_s_ele_f_16_17      <dbl> 70070, 23489, 19488, 25770, 12441, 7645, 12…
## $ student_s_ele_total_16_17  <dbl> 143960, 47906, 39945, 52798, 25510, 15774, …
## $ student_p_ele_m_16_17      <dbl> 2550, 195, 446, 173, 338, 249, 14899, 4546,…
## $ student_p_ele_f_16_17      <dbl> 2287, 156, 369, 143, 261, 216, 13561, 3951,…
## $ student_p_ele_total_16_17  <dbl> 4837, 351, 815, 316, 599, 465, 28460, 8497,…
## $ student_ele_total_16_17    <dbl> 148797, 48257, 40760, 53114, 26109, 16239, …
## $ student_s_ele_m_15_16      <dbl> 80169, 25482, 22257, 30614, 14196, 8561, 14…
## $ student_s_ele_f_15_16      <dbl> 76526, 24719, 21421, 29614, 13344, 8119, 13…
## $ student_s_ele_total_15_16  <dbl> 156695, 50201, 43678, 60228, 27540, 16680, …
## $ student_p_ele_m_15_16      <dbl> 2762, 240, 566, 256, 456, 366, 15891, 4886,…
## $ student_p_ele_f_15_16      <dbl> 2438, 207, 450, 202, 376, 332, 14319, 4242,…
## $ student_p_ele_total_15_16  <dbl> 5200, 447, 1016, 458, 832, 698, 30210, 9128…
## $ student_ele_total_15_16    <dbl> 161895, 50648, 44694, 60686, 28372, 17378, …
## $ student_s_ele_m_14_15      <dbl> 82482, 26164, 23139, 31533, 14177, 8833, 14…
## $ student_s_ele_f_14_15      <dbl> 78583, 25199, 22141, 30732, 13648, 8325, 14…
## $ student_s_ele_total_14_15  <dbl> 161065, 51363, 45280, 62265, 27825, 17158, …
## $ student_p_ele_m_14_15      <dbl> 2417, 248, 437, 254, 381, 343, 13866, 4093,…
## $ student_p_ele_f_14_15      <dbl> 2127, 201, 326, 214, 301, 289, 12578, 3665,…
## $ student_p_ele_total_14_15  <dbl> 4544, 449, 763, 468, 682, 632, 26444, 7758,…
## $ student_ele_total_14_15    <dbl> 165609, 51812, 46043, 62733, 28507, 17790, …
## $ student_s_ele_m_13_14      <dbl> 84194, 26759, 24760, 34227, 15800, 9168, 14…
## $ student_s_ele_f_13_14      <dbl> 80086, 25706, 23833, 34710, 15037, 8565, 14…
## $ student_s_ele_total_13_14  <dbl> 164280, 52465, 48593, 68937, 30837, 17733, …
## $ student_p_ele_m_13_14      <dbl> 2167, 234, 319, 199, 297, 344, 12156, 3787,…
## $ student_p_ele_f_13_14      <dbl> 1905, 209, 264, 169, 247, 272, 11131, 3298,…
## $ student_p_ele_total_13_14  <dbl> 4072, 443, 583, 368, 544, 616, 23287, 7085,…
## $ student_ele_total_13_14    <dbl> 168352, 52908, 49176, 69305, 31381, 18349, …
## $ student_s_ele_m_12_13      <dbl> 85344, 27510, 24978, 35928, 15753, 9423, 14…
## $ student_s_ele_f_12_13      <dbl> 80870, 26001, 23960, 36548, 14935, 8937, 14…
## $ student_s_ele_total_12_13  <dbl> 166214, 53511, 48938, 72476, 30688, 18360, …
## $ student_p_ele_m_12_13      <dbl> 1866, 221, 290, 187, 276, 347, 10644, 3471,…
## $ student_p_ele_f_12_13      <dbl> 1732, 160, 247, 144, 230, 280, 9682, 3019, …
## $ student_p_ele_total_12_13  <dbl> 3598, 381, 537, 331, 506, 627, 20326, 6490,…
## $ student_ele_total_12_13    <dbl> 169812, 53892, 49475, 72807, 31194, 18987, …
## $ student_s_mid_m_21_22      <dbl> 78408, 24187, 20847, 24620, 13286, 8290, 14…
## $ student_s_mid_f_21_22      <dbl> 75930, 23372, 19809, 23315, 12874, 7986, 13…
## $ student_s_mid_total_21_22  <dbl> 154338, 47559, 40656, 47935, 26160, 16276, …
## $ student_p_mid_m_21_22      <dbl> 4662, 659, 677, 175, 537, 461, 21157, 7645,…
## $ student_p_mid_f_21_22      <dbl> 4084, 506, 568, 157, 396, 433, 19288, 7148,…
## $ student_p_mid_total_21_22  <dbl> 8746, 1165, 1245, 332, 933, 894, 40445, 147…
## $ student_mid_total_21_22    <dbl> 163084, 48724, 41901, 48267, 27093, 17170, …
## $ student_s_mid_m_20_21      <dbl> 77061, 24105, 20742, 25803, 13231, 8265, 14…
## $ student_s_mid_f_20_21      <dbl> 74719, 23309, 19918, 24081, 12798, 7917, 13…
## $ student_s_mid_total_20_21  <dbl> 151780, 47414, 40660, 49884, 26029, 16182, …
## $ student_p_mid_m_20_21      <dbl> 4184, 559, 583, 180, 528, 437, 19166, 6744,…
## $ student_p_mid_f_20_21      <dbl> 3655, 421, 486, 158, 368, 394, 17356, 6200,…
## $ student_p_mid_total_20_21  <dbl> 7839, 980, 1069, 338, 896, 831, 36522, 1294…
## $ student_mid_total_20_21    <dbl> 159619, 48394, 41729, 50222, 26925, 17013, …
## $ student_s_mid_m_19_20      <dbl> 83630, 26118, 22744, 27846, 14524, 8916, 15…
## $ student_s_mid_f_19_20      <dbl> 81870, 25611, 22366, 26396, 13899, 8711, 15…
## $ student_s_mid_total_19_20  <dbl> 165500, 51729, 45110, 54242, 28423, 17627, …
## $ student_p_mid_m_19_20      <dbl> 4723, 533, 678, 230, 539, 498, 21319, 7968,…
## $ student_p_mid_f_19_20      <dbl> 4249, 414, 521, 181, 362, 434, 19051, 7078,…
## $ student_p_mid_total_19_20  <dbl> 8972, 947, 1199, 411, 901, 932, 40370, 1504…
## $ student_mid_total_19_20    <dbl> 174472, 52676, 46309, 54653, 29324, 18559, …
## $ student_s_mid_m_18_19      <dbl> 80484, 26317, 23095, 27991, 14455, 8928, 15…
## $ student_s_mid_f_18_19      <dbl> 78236, 25428, 22450, 26485, 14019, 8707, 14…
## $ student_s_mid_total_18_19  <dbl> 158720, 51745, 45545, 54476, 28474, 17635, …
## $ student_p_mid_m_18_19      <dbl> 4768, 424, 756, 195, 443, 502, 20150, 7395,…
## $ student_p_mid_f_18_19      <dbl> 4274, 331, 580, 157, 341, 424, 18110, 6569,…
## $ student_p_mid_total_18_19  <dbl> 9042, 755, 1336, 352, 784, 926, 38260, 1396…
## $ student_mid_total_18_19    <dbl> 167762, 52500, 46881, 54828, 29258, 18561, …
## $ student_s_mid_m_17_18      <dbl> 78959, 26172, 23442, 28502, 14531, 9027, 14…
## $ student_s_mid_f_17_18      <dbl> 76314, 25266, 22797, 27136, 13865, 8665, 14…
## $ student_s_mid_total_17_18  <dbl> 155273, 51438, 46239, 55638, 28396, 17692, …
## $ student_p_mid_m_17_18      <dbl> 4636, 352, 699, 207, 403, 494, 19435, 7037,…
## $ student_p_mid_f_17_18      <dbl> 4097, 263, 599, 155, 367, 405, 17312, 6226,…
## $ student_p_mid_total_17_18  <dbl> 8733, 615, 1298, 362, 770, 899, 36747, 1326…
## $ student_mid_total_17_18    <dbl> 164006, 52053, 47537, 56000, 29166, 18591, …
## $ student_s_mid_m_16_17      <dbl> 79476, 26306, 23494, 30313, 14371, 9269, 14…
## $ student_s_mid_f_16_17      <dbl> 76576, 25173, 22885, 29172, 13743, 9064, 14…
## $ student_s_mid_total_16_17  <dbl> 156052, 51479, 46379, 59485, 28114, 18333, …
## $ student_p_mid_m_16_17      <dbl> 4181, 312, 707, 242, 410, 394, 17558, 5720,…
## $ student_p_mid_f_16_17      <dbl> 3684, 216, 558, 150, 362, 328, 15711, 4996,…
## $ student_p_mid_total_16_17  <dbl> 7865, 528, 1265, 392, 772, 722, 33269, 1071…
## $ student_mid_total_16_17    <dbl> 163917, 52007, 47644, 59877, 28886, 19055, …
## $ student_s_mid_m_15_16      <dbl> 72875, 24269, 21771, 29253, 12905, 8792, 13…
## $ student_s_mid_f_15_16      <dbl> 70749, 23347, 20772, 28236, 12606, 8740, 13…
## $ student_s_mid_total_15_16  <dbl> 143624, 47616, 42543, 57489, 25511, 17532, …
## $ student_p_mid_m_15_16      <dbl> 3631, 258, 782, 283, 494, 451, 17145, 5262,…
## $ student_p_mid_f_15_16      <dbl> 3159, 190, 639, 188, 406, 422, 15287, 4694,…
## $ student_p_mid_total_15_16  <dbl> 6790, 448, 1421, 471, 900, 873, 32432, 9956…
## $ student_mid_total_15_16    <dbl> 150414, 48064, 43964, 57960, 26411, 18405, …
## $ student_s_mid_m_14_15      <dbl> 75263, 24728, 22286, 30496, 13233, 9170, 14…
## $ student_s_mid_f_14_15      <dbl> 73255, 23979, 21252, 29443, 12873, 9340, 14…
## $ student_s_mid_total_14_15  <dbl> 148518, 48707, 43538, 59939, 26106, 18510, …
## $ student_p_mid_m_14_15      <dbl> 2906, 283, 412, 287, 470, 419, 13612, 4233,…
## $ student_p_mid_f_14_15      <dbl> 2504, 211, 322, 185, 363, 365, 11828, 3639,…
## $ student_p_mid_total_14_15  <dbl> 5410, 494, 734, 472, 833, 784, 25440, 7872,…
## $ student_mid_total_14_15    <dbl> 153928, 49201, 44272, 60411, 26939, 19294, …
## $ student_s_mid_m_13_14      <dbl> 79379, 26424, 23390, 34603, 13957, 9729, 14…
## $ student_s_mid_f_13_14      <dbl> 77969, 25642, 22396, 34540, 13714, 9763, 14…
## $ student_s_mid_total_13_14  <dbl> 157348, 52066, 45786, 69143, 27671, 19492, …
## $ student_p_mid_m_13_14      <dbl> 2499, 306, 320, 202, 333, 481, 11917, 3733,…
## $ student_p_mid_f_13_14      <dbl> 2211, 221, 274, 136, 270, 344, 10383, 3186,…
## $ student_p_mid_total_13_14  <dbl> 4710, 527, 594, 338, 603, 825, 22300, 6919,…
## $ student_mid_total_13_14    <dbl> 162058, 52593, 46380, 69481, 28274, 20317, …
## $ student_s_mid_m_12_13      <dbl> 81243, 27248, 24152, 33915, 14478, 10233, 1…
## $ student_s_mid_f_12_13      <dbl> 79282, 26472, 23210, 32630, 14113, 10190, 1…
## $ student_s_mid_total_12_13  <dbl> 160525, 53720, 47362, 66545, 28591, 20423, …
## $ student_p_mid_m_12_13      <dbl> 2167, 256, 314, 166, 352, 495, 10598, 3368,…
## $ student_p_mid_f_12_13      <dbl> 1863, 192, 255, 103, 293, 351, 9209, 2944, …
## $ student_p_mid_total_12_13  <dbl> 4030, 448, 569, 269, 645, 846, 19807, 6312,…
## $ student_mid_total_12_13    <dbl> 164555, 54168, 47931, 66814, 29236, 21269, …
## $ student_s_high_m_21_22     <dbl> 91003, 32854, 25157, 23627, 17125, 11716, 1…
## $ student_s_high_f_21_22     <dbl> 81765, 27687, 23505, 21277, 14673, 10621, 1…
## $ student_s_high_total_21_22 <dbl> 172768, 60541, 48662, 44904, 31798, 22337, …
## $ student_p_high_m_21_22     <dbl> 8873, 1725, 2128, 868, 1286, 607, 30119, 91…
## $ student_p_high_f_21_22     <dbl> 5541, 1006, 1013, 472, 774, 532, 26415, 790…
## $ student_p_high_total_21_22 <dbl> 14414, 2731, 3141, 1340, 2060, 1139, 56534,…
## $ student_high_total_21_22   <dbl> 187182, 63272, 51803, 46244, 33858, 23476, …
## $ student_s_high_m_20_21     <dbl> 83620, 29315, 24916, 21314, 16355, 11877, 1…
## $ student_s_high_f_20_21     <dbl> 78014, 25817, 23186, 20378, 13924, 10783, 1…
## $ student_s_high_total_20_21 <dbl> 161634, 55132, 48102, 41692, 30279, 22660, …
## $ student_p_high_m_20_21     <dbl> 9258, 1732, 2292, 812, 1462, 578, 27773, 83…
## $ student_p_high_f_20_21     <dbl> 5524, 928, 1122, 363, 793, 500, 24661, 7558…
## $ student_p_high_total_20_21 <dbl> 14782, 2660, 3414, 1175, 2255, 1078, 52434,…
## $ student_high_total_20_21   <dbl> 176416, 57792, 51516, 42867, 32534, 23738, …
## $ student_s_high_m_19_20     <dbl> 75085, 25508, 22469, 18953, 13194, 10511, 1…
## $ student_s_high_f_19_20     <dbl> 68263, 22566, 20306, 17913, 12154, 9697, 15…
## $ student_s_high_total_19_20 <dbl> 143348, 48074, 42775, 36866, 25348, 20208, …
## $ student_p_high_m_19_20     <dbl> 9500, 1754, 2236, 767, 1513, 659, 30704, 93…
## $ student_p_high_f_19_20     <dbl> 5966, 923, 1177, 365, 912, 527, 28036, 8904…
## $ student_p_high_total_19_20 <dbl> 15466, 2677, 3413, 1132, 2425, 1186, 58740,…
## $ student_high_total_19_20   <dbl> 158814, 50751, 46188, 37998, 27773, 21394, …
## $ student_s_high_m_18_19     <dbl> 75424, 25924, 22496, 19111, 14256, 10989, 1…
## $ student_s_high_f_18_19     <dbl> 67033, 22531, 20271, 17485, 12181, 10021, 1…
## $ student_s_high_total_18_19 <dbl> 142457, 48455, 42767, 36596, 26437, 21010, …
## $ student_p_high_m_18_19     <dbl> 10503, 1922, 2251, 944, 1563, 628, 33099, 9…
## $ student_p_high_f_18_19     <dbl> 7077, 991, 1231, 485, 974, 524, 29150, 8529…
## $ student_p_high_total_18_19 <dbl> 17580, 2913, 3482, 1429, 2537, 1152, 62249,…
## $ student_high_total_18_19   <dbl> 160037, 51368, 46249, 38025, 28974, 22162, …
## $ student_s_high_m_17_18     <dbl> 74725, 26381, 22477, 18917, 14293, 11431, 1…
## $ student_s_high_f_17_18     <dbl> 69224, 23244, 21570, 17290, 13064, 10865, 1…
## $ student_s_high_total_17_18 <dbl> 143949, 49625, 44047, 36207, 27357, 22296, …
## $ student_p_high_m_17_18     <dbl> 10748, 2077, 2211, 950, 1328, 603, 33482, 9…
## $ student_p_high_f_17_18     <dbl> 7331, 1064, 1249, 514, 897, 469, 29026, 828…
## $ student_p_high_total_17_18 <dbl> 18079, 3141, 3460, 1464, 2225, 1072, 62508,…
## $ student_high_total_17_18   <dbl> 162028, 52766, 47507, 37671, 29582, 23368, …
## $ student_s_high_m_16_17     <dbl> 78998, 27707, 24186, 19801, 15731, 11852, 1…
## $ student_s_high_f_16_17     <dbl> 70723, 24357, 21795, 17145, 13400, 11274, 1…
## $ student_s_high_total_16_17 <dbl> 149721, 52064, 45981, 36946, 29131, 23126, …
## $ student_p_high_m_16_17     <dbl> 9968, 1818, 1855, 695, 900, 558, 31227, 813…
## $ student_p_high_f_16_17     <dbl> 7156, 1020, 1103, 428, 790, 425, 27917, 785…
## $ student_p_high_total_16_17 <dbl> 17124, 2838, 2958, 1123, 1690, 983, 59144, …
## $ student_high_total_16_17   <dbl> 166845, 54902, 48939, 38069, 30821, 24109, …
## $ student_s_high_m_15_16     <dbl> 78488, 29263, 24014, 20453, 14020, 12073, 1…
## $ student_s_high_f_15_16     <dbl> 71503, 25755, 22032, 16958, 13363, 11474, 1…
## $ student_s_high_total_15_16 <dbl> 149991, 55018, 46046, 37411, 27383, 23547, …
## $ student_p_high_m_15_16     <dbl> 9133, 1329, 1369, 511, 819, 471, 28049, 731…
## $ student_p_high_f_15_16     <dbl> 7257, 890, 973, 349, 825, 431, 27734, 7645,…
## $ student_p_high_total_15_16 <dbl> 16390, 2219, 2342, 860, 1644, 902, 55783, 1…
## $ student_high_total_15_16   <dbl> 166381, 57237, 48388, 38271, 29027, 24449, …
## $ student_s_high_m_14_15     <dbl> 95898, 29475, 25219, 21517, 13594, 12370, 1…
## $ student_s_high_f_14_15     <dbl> 82766, 25885, 22000, 17222, 13198, 11619, 1…
## $ student_s_high_total_14_15 <dbl> 178664, 55360, 47219, 38739, 26792, 23989, …
## $ student_p_high_m_14_15     <dbl> 5426, 535, 651, 45, 368, 129, 15587, 3612, …
## $ student_p_high_f_14_15     <dbl> 4192, 358, 505, 27, 320, 109, 14191, 3829, …
## $ student_p_high_total_14_15 <dbl> 9618, 893, 1156, 72, 688, 238, 29778, 7441,…
## $ student_high_total_14_15   <dbl> 188282, 56253, 48375, 38811, 27480, 24227, …
## $ student_s_high_m_13_14     <dbl> 78077, 28436, 23053, 18890, 12829, 12287, 1…
## $ student_s_high_f_13_14     <dbl> 70105, 24706, 20592, 14085, 12223, 11270, 1…
## $ student_s_high_total_13_14 <dbl> 148182, 53142, 43645, 32975, 25052, 23557, …
## $ student_p_high_m_13_14     <dbl> 3795, 370, 391, 0, 332, 49, 12398, 2984, 0,…
## $ student_p_high_f_13_14     <dbl> 3245, 269, 348, 0, 287, 49, 11682, 3339, 0,…
## $ student_p_high_total_13_14 <dbl> 7040, 639, 739, 0, 619, 98, 24080, 6323, 0,…
## $ student_high_total_13_14   <dbl> 155222, 53781, 44384, 32975, 25671, 23655, …
## $ student_s_high_m_12_13     <dbl> 74747, 27084, 21157, 16629, 11556, 11941, 1…
## $ student_s_high_f_12_13     <dbl> 66812, 22980, 18302, 11551, 10901, 10653, 1…
## $ student_s_high_total_12_13 <dbl> 141559, 50064, 39459, 28180, 22457, 22594, …
## $ student_p_high_m_12_13     <dbl> 2453, 191, 219, 0, 237, 57, 9423, 2567, 0, …
## $ student_p_high_f_12_13     <dbl> 2282, 131, 179, 0, 184, 42, 8856, 2703, 0, …
## $ student_p_high_total_12_13 <dbl> 4735, 322, 398, 0, 421, 99, 18279, 5270, 0,…
## $ student_high_total_12_13   <dbl> 146294, 50386, 39857, 28180, 22878, 22693, …
## $ student_s_all_m_21_22      <dbl> 276427, 91207, 73952, 79403, 47765, 31267, …
## $ student_s_all_f_21_22      <dbl> 258915, 83145, 69619, 74086, 44009, 29082, …
## $ student_s_all_total_21_22  <dbl> 535342, 174352, 143571, 153489, 91774, 6034…
## $ student_p_all_m_21_22      <dbl> 21072, 3628, 4413, 1475, 2832, 2186, 90674,…
## $ student_p_all_f_21_22      <dbl> 16250, 2552, 3028, 1077, 1981, 1932, 80740,…
## $ student_p_all_total_21_22  <dbl> 37322, 6180, 7441, 2552, 4813, 4118, 171414…
## $ student_all_total_21_22    <dbl> 572664, 180532, 151012, 156041, 96587, 6446…
## $ student_s_all_m_20_21      <dbl> 257889, 84691, 72039, 77971, 46629, 30811, …
## $ student_s_all_f_20_21      <dbl> 244131, 78399, 67749, 73363, 42943, 28535, …
## $ student_s_all_total_20_21  <dbl> 502020, 163090, 139788, 151334, 89572, 5934…
## $ student_p_all_m_20_21      <dbl> 18816, 2944, 3917, 1243, 2628, 1717, 74642,…
## $ student_p_all_f_20_21      <dbl> 13905, 1887, 2572, 788, 1737, 1534, 66723, …
## $ student_p_all_total_20_21  <dbl> 32721, 4831, 6489, 2031, 4365, 3251, 141365…
## $ student_all_total_20_21    <dbl> 534741, 167921, 146277, 153365, 93937, 6259…
## $ student_s_all_m_19_20      <dbl> 261068, 83096, 72481, 78214, 44757, 30556, …
## $ student_s_all_f_19_20      <dbl> 246205, 77636, 68185, 73878, 42440, 28827, …
## $ student_s_all_total_19_20  <dbl> 507273, 160732, 140666, 152092, 87197, 5938…
## $ student_p_all_m_19_20      <dbl> 20506, 3128, 4030, 1282, 2698, 2038, 85127,…
## $ student_p_all_f_19_20      <dbl> 15751, 2079, 2757, 833, 1850, 1728, 76892, …
## $ student_p_all_total_19_20  <dbl> 36257, 5207, 6787, 2115, 4548, 3766, 162019…
## $ student_all_total_19_20    <dbl> 543530, 165939, 147453, 154207, 91745, 6314…
## $ student_s_all_m_18_19      <dbl> 256786, 84057, 72854, 79974, 45966, 31108, …
## $ student_s_all_f_18_19      <dbl> 240340, 77678, 68298, 75168, 42517, 29220, …
## $ student_s_all_total_18_19  <dbl> 497126, 161735, 141152, 155142, 88483, 6032…
## $ student_p_all_m_18_19      <dbl> 21372, 2933, 4138, 1437, 2636, 1927, 84000,…
## $ student_p_all_f_18_19      <dbl> 16729, 1812, 2810, 870, 1845, 1632, 75203, …
## $ student_p_all_total_18_19  <dbl> 38101, 4745, 6948, 2307, 4481, 3559, 159203…
## $ student_all_total_18_19    <dbl> 535227, 166480, 148100, 157449, 92964, 6388…
## $ student_s_all_m_17_18      <dbl> 250389, 84184, 72401, 80213, 45854, 31719, …
## $ student_s_all_f_17_18      <dbl> 236853, 78278, 69262, 75333, 43015, 30077, …
## $ student_s_all_total_17_18  <dbl> 487242, 162462, 141663, 155546, 88869, 6179…
## $ student_p_all_m_17_18      <dbl> 21001, 2974, 3947, 1398, 2343, 1762, 81813,…
## $ student_p_all_f_17_18      <dbl> 16401, 1766, 2766, 843, 1808, 1490, 72541, …
## $ student_p_all_total_17_18  <dbl> 37402, 4740, 6713, 2241, 4151, 3252, 154354…
## $ student_all_total_17_18    <dbl> 524644, 167202, 148376, 157787, 93020, 6504…
## $ student_s_all_m_16_17      <dbl> 251330, 84237, 73875, 82141, 46549, 32099, …
## $ student_s_all_f_16_17      <dbl> 234653, 78344, 69311, 76570, 42831, 30589, …
## $ student_s_all_total_16_17  <dbl> 485983, 162581, 143186, 158711, 89380, 6268…
## $ student_p_all_m_16_17      <dbl> 19119, 2639, 3546, 1171, 1926, 1466, 75821,…
## $ student_p_all_f_16_17      <dbl> 15257, 1630, 2538, 788, 1662, 1188, 67775, …
## $ student_p_all_total_16_17  <dbl> 34376, 4269, 6084, 1959, 3588, 2654, 143596…
## $ student_all_total_16_17    <dbl> 520359, 166850, 149270, 160670, 92968, 6534…
## $ student_s_all_m_15_16      <dbl> 248014, 84228, 73080, 85163, 44162, 31983, …
## $ student_s_all_f_15_16      <dbl> 233556, 78431, 68907, 79190, 42292, 30677, …
## $ student_s_all_total_15_16  <dbl> 481570, 162659, 141987, 164353, 86454, 6266…
## $ student_p_all_m_15_16      <dbl> 17488, 2094, 3225, 1118, 2071, 1573, 71885,…
## $ student_p_all_f_15_16      <dbl> 14587, 1512, 2506, 800, 1878, 1429, 66873, …
## $ student_p_all_total_15_16  <dbl> 32075, 3606, 5731, 1918, 3949, 3002, 138758…
## $ student_all_total_15_16    <dbl> 513645, 166265, 147718, 166271, 90403, 6566…
## $ student_s_all_m_14_15      <dbl> 268572, 85340, 75389, 88393, 44590, 33056, …
## $ student_s_all_f_14_15      <dbl> 247960, 79678, 69715, 81882, 42922, 31727, …
## $ student_s_all_total_14_15  <dbl> 516532, 165018, 145104, 170275, 87512, 6478…
## $ student_p_all_m_14_15      <dbl> 11918, 1295, 1911, 664, 1395, 1116, 45031, …
## $ student_p_all_f_14_15      <dbl> 9856, 977, 1515, 487, 1137, 929, 40398, 203…
## $ student_p_all_total_14_15  <dbl> 21774, 2272, 3426, 1151, 2532, 2045, 85429,…
## $ student_all_total_14_15    <dbl> 538306, 167290, 148530, 171426, 90044, 6682…
## $ student_s_all_m_13_14      <dbl> 255565, 86183, 75831, 92188, 45360, 34266, …
## $ student_s_all_f_13_14      <dbl> 240664, 80334, 71082, 87331, 43433, 32381, …
## $ student_s_all_total_13_14  <dbl> 496229, 166517, 146913, 179519, 88793, 6664…
## $ student_p_all_m_13_14      <dbl> 9912, 1096, 1332, 453, 1163, 1027, 44853, 1…
## $ student_p_all_f_13_14      <dbl> 8602, 865, 1149, 345, 944, 808, 40969, 1300…
## $ student_p_all_total_13_14  <dbl> 18514, 1961, 2481, 798, 2107, 1835, 85822, …
## $ student_all_total_13_14    <dbl> 514743, 168478, 149394, 180317, 90900, 6848…
## $ student_s_all_m_12_13      <dbl> 254937, 86812, 75361, 90404, 44688, 34570, …
## $ student_s_all_f_12_13      <dbl> 239469, 80234, 70140, 84395, 42602, 32500, …
## $ student_s_all_total_12_13  <dbl> 494406, 167046, 145501, 174799, 87290, 6707…
## $ student_p_all_m_12_13      <dbl> 7996, 798, 1081, 398, 1027, 1028, 38734, 12…
## $ student_p_all_f_12_13      <dbl> 7181, 616, 900, 274, 837, 819, 35219, 11497…
## $ student_p_all_total_12_13  <dbl> 15177, 1414, 1981, 672, 1864, 1847, 73953, …
## $ student_all_total_12_13    <dbl> 509583, 168460, 147482, 175471, 89154, 6891…

Oldukça uzun bir liste geldi. Zaten çıktının başında da veri setinde 81 satırın (iller) ve 357 sütunun (değişkenler) bulunduğu bilgisi yer alıyor. Bu bölümde bu veri setinden yararlanacağız. Ancak öncesinde küçük bir düzenleme yapalım. Örneğin plaka numaraları (plate_number) değişkeni karakter tipinde görünüyor. Bunu faktör olarak değiştirmek gerekmektedir. Buna benzer şekilde diğer karakter türündeki değişkenler de aslında birer faktör. Aşağıdaki satır komutlarını çalıştırarak karakter türündeki tüm verileri faktöre çevirebiliriz.

TR_stu <- TR_stu |> 
  mutate_if(is.character, as.factor)

Bu işlemin ardından son bir düzenleme daha yapmamız gerek. O da gadm_L3number ve metropolitan değişkenlerinin de faktöre dönüştürülmesi. Çünkü bu değişkenler R’a aktarılırken double tipinde aktarılmıştır. Bu düzenleme için aşağıdaki satır komutları çalıştırılabilir.

TR_stu <- TR_stu |>
  mutate_at(c("gadm_L3number", "metropolitan"), as.factor)
Uygulamalara geçmeden önce dplyr fonksiyonlarının ortak özelliklerini bilmek faydalı olabilir:
  • Bu fonksiyonların ilk argümanları her zaman data frame’dir.
  • Sonraki argümanlar genellikle değişken adlarını kullanarak (tırnak işareti içine almadan) hangi sütunlarla çalışılacağını ifade eder.
  • Çıktı her zaman yeni bir data frame’dir (Wickham, Çetinkaya-Rundel ve Grolemund, 2023).
  • dplyr paketindeki fonksiyonları birbirine bağlamak için ‘pipe’ adı verilen bir bağlantı operatörü kullanılmaktadır. Eskiden bu operatör %>% şeklinde iken artık |> şeklinde kullanılmaktadır. Bu operatör ile soldaki veri ya da fonksiyonun çıktısı alınıp sağdaki işlemin yapılması istenir. Temelde, şu şekilde ifade edilebilir: x |> f(y) ifadesi f(x, y) anlamına gelir. Benzer şekilde x |> f(y) |> g(z) de g(f(x, y), z) anlamına gelir. Açıklamaları bir kenara bırakalım, operatör ile ne yapıldığını satır komutları üzerinden görelim.

    TR_stu |> 
      filter(metropolitan == 1)
    ## # A tibble: 30 × 357
    ##    gadm_L3number plate_number province_upper NUTS_level1 NUTS_level1_name 
    ##    <fct>                <dbl> <fct>          <fct>       <fct>            
    ##  1 1                        1 ADANA          TR6         Akdeniz          
    ##  2 7                        6 ANKARA         TR5         Bati Anadolu     
    ##  3 8                        7 ANTALYA        TR6         Akdeniz          
    ##  4 11                       9 AYDIN          TR3         Ege              
    ##  5 12                      10 BALIKESIR      TR2         Bati Marmara     
    ##  6 21                      16 BURSA          TR4         Dogu Marmara     
    ##  7 25                      20 DENIZLI        TR3         Ege              
    ##  8 26                      21 DIYARBAKIR     TRC         Guneydogu Anadolu
    ##  9 31                      25 ERZURUM        TRA         Kuzeydogu Anadolu
    ## 10 32                      26 ESKISEHIR      TR4         Dogu Marmara     
    ## # ℹ 20 more rows
    ## # ℹ 352 more variables: NUTS_level2 <fct>, metropolitan <fct>,
    ## #   student_s_pre_m_21_22 <dbl>, student_s_pre_f_21_22 <dbl>,
    ## #   student_s_pre_total_21_22 <dbl>, student_p_pre_m_21_22 <dbl>,
    ## #   student_p_pre_f_21_22 <dbl>, student_p_pre_total_21_22 <dbl>,
    ## #   student_pre_total_21_22 <dbl>, student_s_pre_m_20_21 <dbl>,
    ## #   student_s_pre_f_20_21 <dbl>, student_s_pre_total_20_21 <dbl>, …

    Hatırlayacağınız üzere veri setinde 81 satır vardı. metropolitan değişkeni büyükşehir olma durumunu göstermekte. Bu değerin 1 olduğu – yani büyükşehir – durumların filtrelenmesi için filter() fonksiyonundan yararlanılmıştır. Bu örnekte satır komutunun en solunda veri setinin adı bulunmakta, ardından |> operatörü ile bu veri setine ne yapılmasını istediğimizi göstermek için bağlantı kuruyoruz. Ardından filter() fonksiyonu ile satırları filtreledik. Bu komutlar çalıştırıldığında yeni bir veri seti çıktı olarak sunulacaktır. Ancak unutulmamalıdır ki, bu veri seti (sadece büyükşehirlerden oluşan) herhangi bir yere kaydedilmemiştir. Eğer bu çıktı (yeni veri seti) kaydedilmek isteniyorsa daha önce öğrendiğimiz gibi <- atama operatörü ile çıktıyı bir nesneye atayabiliriz.

    TR_stu2 <- TR_stu |> 
      filter(metropolitan == 1)

    7.1 filter() Fonksiyonu

    filter() fonksiyonu adından da anlaşıldığı üzere filtreleme yapmak için kullanılır. Örneğin;

    TR_stu |>
      filter(student_s_pre_total_21_22 > 15000)
    ## # A tibble: 29 × 357
    ##    gadm_L3number plate_number province_upper NUTS_level1 NUTS_level1_name 
    ##    <fct>                <dbl> <fct>          <fct>       <fct>            
    ##  1 1                        1 ADANA          TR6         Akdeniz          
    ##  2 2                        2 ADIYAMAN       TRC         Guneydogu Anadolu
    ##  3 7                        6 ANKARA         TR5         Bati Anadolu     
    ##  4 8                        7 ANTALYA        TR6         Akdeniz          
    ##  5 11                       9 AYDIN          TR3         Ege              
    ##  6 12                      10 BALIKESIR      TR2         Bati Marmara     
    ##  7 14                      72 BATMAN         TRC         Guneydogu Anadolu
    ##  8 21                      16 BURSA          TR4         Dogu Marmara     
    ##  9 25                      20 DENIZLI        TR3         Ege              
    ## 10 26                      21 DIYARBAKIR     TRC         Guneydogu Anadolu
    ## # ℹ 19 more rows
    ## # ℹ 352 more variables: NUTS_level2 <fct>, metropolitan <fct>,
    ## #   student_s_pre_m_21_22 <dbl>, student_s_pre_f_21_22 <dbl>,
    ## #   student_s_pre_total_21_22 <dbl>, student_p_pre_m_21_22 <dbl>,
    ## #   student_p_pre_f_21_22 <dbl>, student_p_pre_total_21_22 <dbl>,
    ## #   student_pre_total_21_22 <dbl>, student_s_pre_m_20_21 <dbl>,
    ## #   student_s_pre_f_20_21 <dbl>, student_s_pre_total_20_21 <dbl>, …

    Bu komutlar çalıştırıldığında yeni bir veri seti oluşur ve bu veri seti yalnızca student_s_pre_total_21_22 değerinin 15000’den fazla olduğu satırları içerir (yani 2021-2022 eğitim yılında toplam devlet ana okulu öğrencisi sayısı 15000’den fazla olan şehirler). > (büyüktür) işareti haricinde >= (büyük veya eşittir), < (küçüktür), <= (küçük veya eşittir), == (eşittir) ve != (eşit değildir) sınamaları da yapılabilir. Bu sınamalar birlikte de kullanılabilir. Örneğin;

    TR_stu |>
      filter(student_s_pre_total_21_22 > 15000 & metropolitan == 0)
    ## # A tibble: 3 × 357
    ##   gadm_L3number plate_number province_upper NUTS_level1 NUTS_level1_name 
    ##   <fct>                <dbl> <fct>          <fct>       <fct>            
    ## 1 2                        2 ADIYAMAN       TRC         Guneydogu Anadolu
    ## 2 14                      72 BATMAN         TRC         Guneydogu Anadolu
    ## 3 71                      73 SIRNAK         TRC         Guneydogu Anadolu
    ## # ℹ 352 more variables: NUTS_level2 <fct>, metropolitan <fct>,
    ## #   student_s_pre_m_21_22 <dbl>, student_s_pre_f_21_22 <dbl>,
    ## #   student_s_pre_total_21_22 <dbl>, student_p_pre_m_21_22 <dbl>,
    ## #   student_p_pre_f_21_22 <dbl>, student_p_pre_total_21_22 <dbl>,
    ## #   student_pre_total_21_22 <dbl>, student_s_pre_m_20_21 <dbl>,
    ## #   student_s_pre_f_20_21 <dbl>, student_s_pre_total_20_21 <dbl>,
    ## #   student_p_pre_m_20_21 <dbl>, student_p_pre_f_20_21 <dbl>, …

    Bu komutlar ile iki özelliği birlikte sağlayan satırlar istenmiştir. Yani toplam öğrenci sayısı 15000’in üzerinde olan büyükşehir olmayan şehirler. Yalnızca 3 şehir listelenecektir (& sembolü yerine | sembolünü koyarak işlemi tekrarlayınız, çıktının neden 77 satır içerdiği üzerine düşününüz). %in% de oldukça kullanışlı bir semboldür. Aşağıdaki örneği inceleyiniz.

    TR_stu |>
      filter(NUTS_level1 %in% c("TRA", "TRB", "TRC"))
    ## # A tibble: 24 × 357
    ##    gadm_L3number plate_number province_upper NUTS_level1 NUTS_level1_name 
    ##    <fct>                <dbl> <fct>          <fct>       <fct>            
    ##  1 2                        2 ADIYAMAN       TRC         Guneydogu Anadolu
    ##  2 4                        4 AGRI           TRA         Kuzeydogu Anadolu
    ##  3 9                       75 ARDAHAN        TRA         Kuzeydogu Anadolu
    ##  4 14                      72 BATMAN         TRC         Guneydogu Anadolu
    ##  5 15                      69 BAYBURT        TRA         Kuzeydogu Anadolu
    ##  6 17                      12 BINGOL         TRB         Ortadogu Anadolu 
    ##  7 18                      13 BITLIS         TRB         Ortadogu Anadolu 
    ##  8 26                      21 DIYARBAKIR     TRC         Guneydogu Anadolu
    ##  9 29                      23 ELAZIG         TRB         Ortadogu Anadolu 
    ## 10 30                      24 ERZINCAN       TRA         Kuzeydogu Anadolu
    ## # ℹ 14 more rows
    ## # ℹ 352 more variables: NUTS_level2 <fct>, metropolitan <fct>,
    ## #   student_s_pre_m_21_22 <dbl>, student_s_pre_f_21_22 <dbl>,
    ## #   student_s_pre_total_21_22 <dbl>, student_p_pre_m_21_22 <dbl>,
    ## #   student_p_pre_f_21_22 <dbl>, student_p_pre_total_21_22 <dbl>,
    ## #   student_pre_total_21_22 <dbl>, student_s_pre_m_20_21 <dbl>,
    ## #   student_s_pre_f_20_21 <dbl>, student_s_pre_total_20_21 <dbl>, …

    Burada NUTS_level1 (istatistiki bölge birimleri sınıflandırması – düzey 1) değişkeninde TRA, TRB ve TRC değerlerini içeren satırlar ekrana getirilecektir. Bu şehirler 24 tanedir.

    7.2 arrange() Fonksiyonu

    arrange() fonksiyonu ile satırların sıralaması düzenlenebilir. Örneğin, TR_stu isimli veri seti gadm_L3number değişkenine göre sıralanmıştır. Oysa biz bunu plakalara (plate_number) sıralı halde görmek isteyebilir, bu şekilde düzenlenmiş bir veri seti ile çalışmak isteyebiliriz. Bunun için;

    TR_stu |>
      arrange(plate_number)
    ## # A tibble: 81 × 357
    ##    gadm_L3number plate_number province_upper NUTS_level1 NUTS_level1_name 
    ##    <fct>                <dbl> <fct>          <fct>       <fct>            
    ##  1 1                        1 ADANA          TR6         Akdeniz          
    ##  2 2                        2 ADIYAMAN       TRC         Guneydogu Anadolu
    ##  3 3                        3 AFYONKARAHISAR TR3         Ege              
    ##  4 4                        4 AGRI           TRA         Kuzeydogu Anadolu
    ##  5 6                        5 AMASYA         TR8         Bati Karadeniz   
    ##  6 7                        6 ANKARA         TR5         Bati Anadolu     
    ##  7 8                        7 ANTALYA        TR6         Akdeniz          
    ##  8 10                       8 ARTVIN         TR9         Dogu Karadeniz   
    ##  9 11                       9 AYDIN          TR3         Ege              
    ## 10 12                      10 BALIKESIR      TR2         Bati Marmara     
    ## # ℹ 71 more rows
    ## # ℹ 352 more variables: NUTS_level2 <fct>, metropolitan <fct>,
    ## #   student_s_pre_m_21_22 <dbl>, student_s_pre_f_21_22 <dbl>,
    ## #   student_s_pre_total_21_22 <dbl>, student_p_pre_m_21_22 <dbl>,
    ## #   student_p_pre_f_21_22 <dbl>, student_p_pre_total_21_22 <dbl>,
    ## #   student_pre_total_21_22 <dbl>, student_s_pre_m_20_21 <dbl>,
    ## #   student_s_pre_f_20_21 <dbl>, student_s_pre_total_20_21 <dbl>, …

    Sıralamanın 1’den 81’e doğru değil de tam tersi şekilde gitmesini istiyorsak, arrange() fonksiyonunu desc() fonksiyonu ile birlikte kullanabiliriz.

    TR_stu |>
      arrange(desc(plate_number))
    ## # A tibble: 81 × 357
    ##    gadm_L3number plate_number province_upper NUTS_level1 NUTS_level1_name 
    ##    <fct>                <dbl> <fct>          <fct>       <fct>            
    ##  1 27                      81 DUZCE          TR4         Dogu Marmara     
    ##  2 64                      80 OSMANIYE       TR6         Akdeniz          
    ##  3 48                      79 KILIS          TRC         Guneydogu Anadolu
    ##  4 43                      78 KARABUK        TR8         Bati Karadeniz   
    ##  5 79                      77 YALOVA         TR4         Dogu Marmara     
    ##  6 38                      76 IGDIR          TRA         Kuzeydogu Anadolu
    ##  7 9                       75 ARDAHAN        TRA         Kuzeydogu Anadolu
    ##  8 13                      74 BARTIN         TR8         Bati Karadeniz   
    ##  9 71                      73 SIRNAK         TRC         Guneydogu Anadolu
    ## 10 14                      72 BATMAN         TRC         Guneydogu Anadolu
    ## # ℹ 71 more rows
    ## # ℹ 352 more variables: NUTS_level2 <fct>, metropolitan <fct>,
    ## #   student_s_pre_m_21_22 <dbl>, student_s_pre_f_21_22 <dbl>,
    ## #   student_s_pre_total_21_22 <dbl>, student_p_pre_m_21_22 <dbl>,
    ## #   student_p_pre_f_21_22 <dbl>, student_p_pre_total_21_22 <dbl>,
    ## #   student_pre_total_21_22 <dbl>, student_s_pre_m_20_21 <dbl>,
    ## #   student_s_pre_f_20_21 <dbl>, student_s_pre_total_20_21 <dbl>, …

    Kısaca arrange() fonksiyonu ile veri setindeki satırların sıraları değiştirilebilir. Bu sırada veri seti değişmez, yani bir filtreleme söz konusu değildir.

    7.3 distinct() Fonksiyonu

    distinct() fonksiyonu veri setinin satırlarındaki eşsiz (unique) değerleri listelemek için kullanılır. Örneğin TR_stu veri setimizde kaç tane istatistiki bölge birimleri bulunuyor, bunu görmek için aşağıdaki komutları çalıştırabiliriz.

    TR_stu |>
      distinct(NUTS_level1_name)
    ## # A tibble: 12 × 1
    ##    NUTS_level1_name 
    ##    <fct>            
    ##  1 Akdeniz          
    ##  2 Guneydogu Anadolu
    ##  3 Ege              
    ##  4 Kuzeydogu Anadolu
    ##  5 Orta Anadolu     
    ##  6 Bati Karadeniz   
    ##  7 Bati Anadolu     
    ##  8 Dogu Karadeniz   
    ##  9 Bati Marmara     
    ## 10 Dogu Marmara     
    ## 11 Ortadogu Anadolu 
    ## 12 Istanbul

    Görüldüğü üzere sonuç 12. distinct() fonksiyonu ilgili sütundaki değerleri inceler ve aynı olanlardan yalnızca bir tanesini (ilkini) ekrana getirir. Bu eşsizleştirme ile birlikte diğer sütunların kaybolduğunu fark etmişsinizdir. Bu sütunları da veri setinde tutmak istiyorsanız aşağıdaki komutları kullanabilirsiniz.

    TR_stu |>
      distinct(NUTS_level1_name, .keep_all = TRUE)
    ## # A tibble: 12 × 357
    ##    gadm_L3number plate_number province_upper NUTS_level1 NUTS_level1_name 
    ##    <fct>                <dbl> <fct>          <fct>       <fct>            
    ##  1 1                        1 ADANA          TR6         Akdeniz          
    ##  2 2                        2 ADIYAMAN       TRC         Guneydogu Anadolu
    ##  3 3                        3 AFYONKARAHISAR TR3         Ege              
    ##  4 4                        4 AGRI           TRA         Kuzeydogu Anadolu
    ##  5 5                       68 AKSARAY        TR7         Orta Anadolu     
    ##  6 6                        5 AMASYA         TR8         Bati Karadeniz   
    ##  7 7                        6 ANKARA         TR5         Bati Anadolu     
    ##  8 10                       8 ARTVIN         TR9         Dogu Karadeniz   
    ##  9 12                      10 BALIKESIR      TR2         Bati Marmara     
    ## 10 16                      11 BILECIK        TR4         Dogu Marmara     
    ## 11 17                      12 BINGOL         TRB         Ortadogu Anadolu 
    ## 12 40                      34 ISTANBUL       TR1         Istanbul         
    ## # ℹ 352 more variables: NUTS_level2 <fct>, metropolitan <fct>,
    ## #   student_s_pre_m_21_22 <dbl>, student_s_pre_f_21_22 <dbl>,
    ## #   student_s_pre_total_21_22 <dbl>, student_p_pre_m_21_22 <dbl>,
    ## #   student_p_pre_f_21_22 <dbl>, student_p_pre_total_21_22 <dbl>,
    ## #   student_pre_total_21_22 <dbl>, student_s_pre_m_20_21 <dbl>,
    ## #   student_s_pre_f_20_21 <dbl>, student_s_pre_total_20_21 <dbl>,
    ## #   student_p_pre_m_20_21 <dbl>, student_p_pre_f_20_21 <dbl>, …

    Bu durumda 12 satırın yanına veri setindeki tüm sütunlar eklenecektir. Ancak, başka herhangi bir işlem gerçekleştirilmediğini fark ediniz. Burada yalnızca 12 eşsiz NUTS_level1_name değeri listelenmekte ve bu değerlerin karşısındaki değerler yanlarına getirilmektedir. Tüm veri seti 81 satırdan oluşmakta idi. Yani, istatistiki bölgelerin kaç tane olduğundan habersiziz. Bu noktada count() fonksiyonu ile çakışmaların kaç adet olduğu listelenebilir.

    TR_stu |>
      count(NUTS_level1_name)
    ## # A tibble: 12 × 2
    ##    NUTS_level1_name      n
    ##    <fct>             <int>
    ##  1 Akdeniz               8
    ##  2 Bati Anadolu          3
    ##  3 Bati Karadeniz       10
    ##  4 Bati Marmara          5
    ##  5 Dogu Karadeniz        6
    ##  6 Dogu Marmara          8
    ##  7 Ege                   8
    ##  8 Guneydogu Anadolu     9
    ##  9 Istanbul              1
    ## 10 Kuzeydogu Anadolu     7
    ## 11 Orta Anadolu          8
    ## 12 Ortadogu Anadolu      8

    7.4 mutate() Fonksiyonu

    mutate() fonksiyonu ile veri setinde bulunan değişkenlerden veri seti için yeni değişkenler üretilebilir ve bu yeni değişkenler veri seti ile birleştirilebilir. Örneğin, TR_stu nesnesinde (veri setinde) yer alan 2021-2022 eğitim öğretim yılında devlet liselerinde eğitim gören erkek ve kız öğrencilerin toplam sayısı aşağıdaki komut ile hesaplanarak veri setine yeni bir değişken (toplam_devlet_lise) olarak eklenebilir.

    TR_stu3 <- TR_stu |>
      mutate(toplam_devlet_lise = student_s_high_m_21_22 + student_s_high_f_21_22)

    Bu veri setinde aslında bu toplam değer vardır. İşlemin doğru olup olmadığını anlamak için identical() fonksiyonu ile iki vektörün eş olup olmadığını test edebiliriz. identical(TR_stu3$toplam_devlet_lise, TR_stu$student_s_high_total_21_22) Görüldüğü üzere (TRUE) TR_stu3’te yer alan yeni değişken ile uygulama verisinde yer alan değişken birebir aynıdır.

    mutate() fonksiyonu ile ilgilendiğimiz değişkenin veri setindeki pozisyonunu da değiştirebiliriz. Bunun için .before ve .after argümanları kullanılır.

    TR_stu |>
      mutate(toplam_devlet_lise = student_s_high_m_21_22 + student_s_high_f_21_22,
             .before = province_upper)
    ## # A tibble: 81 × 358
    ##    gadm_L3number plate_number toplam_devlet_lise province_upper NUTS_level1
    ##    <fct>                <dbl>              <dbl> <fct>          <fct>      
    ##  1 1                        1             172768 ADANA          TR6        
    ##  2 2                        2              60541 ADIYAMAN       TRC        
    ##  3 3                        3              48662 AFYONKARAHISAR TR3        
    ##  4 4                        4              44904 AGRI           TRA        
    ##  5 5                       68              31798 AKSARAY        TR7        
    ##  6 6                        5              22337 AMASYA         TR8        
    ##  7 7                        6             360809 ANKARA         TR5        
    ##  8 8                        7             176616 ANTALYA        TR6        
    ##  9 9                       75               7611 ARDAHAN        TRA        
    ## 10 10                       8              10091 ARTVIN         TR9        
    ## # ℹ 71 more rows
    ## # ℹ 353 more variables: NUTS_level1_name <fct>, NUTS_level2 <fct>,
    ## #   metropolitan <fct>, student_s_pre_m_21_22 <dbl>,
    ## #   student_s_pre_f_21_22 <dbl>, student_s_pre_total_21_22 <dbl>,
    ## #   student_p_pre_m_21_22 <dbl>, student_p_pre_f_21_22 <dbl>,
    ## #   student_p_pre_total_21_22 <dbl>, student_pre_total_21_22 <dbl>,
    ## #   student_s_pre_m_20_21 <dbl>, student_s_pre_f_20_21 <dbl>, …

    Yeni üretilen değişken province_upper değişkeninin bir öncesine eklenmiştir.

    TR_stu |>
      mutate(toplam_devlet_lise = student_s_high_m_21_22 + student_s_high_f_21_22,
             .after = NUTS_level1_name)
    ## # A tibble: 81 × 358
    ##    gadm_L3number plate_number province_upper NUTS_level1 NUTS_level1_name 
    ##    <fct>                <dbl> <fct>          <fct>       <fct>            
    ##  1 1                        1 ADANA          TR6         Akdeniz          
    ##  2 2                        2 ADIYAMAN       TRC         Guneydogu Anadolu
    ##  3 3                        3 AFYONKARAHISAR TR3         Ege              
    ##  4 4                        4 AGRI           TRA         Kuzeydogu Anadolu
    ##  5 5                       68 AKSARAY        TR7         Orta Anadolu     
    ##  6 6                        5 AMASYA         TR8         Bati Karadeniz   
    ##  7 7                        6 ANKARA         TR5         Bati Anadolu     
    ##  8 8                        7 ANTALYA        TR6         Akdeniz          
    ##  9 9                       75 ARDAHAN        TRA         Kuzeydogu Anadolu
    ## 10 10                       8 ARTVIN         TR9         Dogu Karadeniz   
    ## # ℹ 71 more rows
    ## # ℹ 353 more variables: toplam_devlet_lise <dbl>, NUTS_level2 <fct>,
    ## #   metropolitan <fct>, student_s_pre_m_21_22 <dbl>,
    ## #   student_s_pre_f_21_22 <dbl>, student_s_pre_total_21_22 <dbl>,
    ## #   student_p_pre_m_21_22 <dbl>, student_p_pre_f_21_22 <dbl>,
    ## #   student_p_pre_total_21_22 <dbl>, student_pre_total_21_22 <dbl>,
    ## #   student_s_pre_m_20_21 <dbl>, student_s_pre_f_20_21 <dbl>, …

    Yeni üretilen değişken NUTS_level1_name değişkeninin bir sonrasına eklenmiştir. Bu fonksiyon ile aritmetik işlemler de yapılabilir. Örneğin, seçilen bir değişken 1000 sayısına bölünebilir (/) ya da değişkenin karesi (^2) alınabilir. Çıkarma işlemi (-) ya da toplama işlemi (+) yapılabilir.

    7.5 select() Fonksiyonu

    select() fonksiyonu ile bir veri setindeki ilgilenilen değişkenler seçilebilir. Örneğin;

    TR_stu |>
      select(plate_number, province_upper, student_all_total_21_22)
    ## # A tibble: 81 × 3
    ##    plate_number province_upper student_all_total_21_22
    ##           <dbl> <fct>                            <dbl>
    ##  1            1 ADANA                           572664
    ##  2            2 ADIYAMAN                        180532
    ##  3            3 AFYONKARAHISAR                  151012
    ##  4            4 AGRI                            156041
    ##  5           68 AKSARAY                          96587
    ##  6            5 AMASYA                           64467
    ##  7            6 ANKARA                         1176294
    ##  8            7 ANTALYA                         557063
    ##  9           75 ARDAHAN                          19781
    ## 10            8 ARTVIN                           27896
    ## # ℹ 71 more rows

    Yukarıdaki komutlar çalıştırıldığında, 3 değişkenden oluşan daha küçük bir veri seti elde edilecektir. Bu veri seti plaka numaralarını, şehir adlarını ve 2021-2022 eğitim yılındaki tüm öğrencilerin sayılarını (devlet okulları ve özel okullar, ana okulundan lise sona kadar) verecektir.

    Değişken isimlerinin arasında : konarak bir seçilen iki sütun arasındaki tüm sütunlar birlikte ele alınabilir.

    TR_stu |>
      select(plate_number:NUTS_level2)
    ## # A tibble: 81 × 5
    ##    plate_number province_upper NUTS_level1 NUTS_level1_name  NUTS_level2
    ##           <dbl> <fct>          <fct>       <fct>             <fct>      
    ##  1            1 ADANA          TR6         Akdeniz           TR62       
    ##  2            2 ADIYAMAN       TRC         Guneydogu Anadolu TRC1       
    ##  3            3 AFYONKARAHISAR TR3         Ege               TR33       
    ##  4            4 AGRI           TRA         Kuzeydogu Anadolu TRA2       
    ##  5           68 AKSARAY        TR7         Orta Anadolu      TR71       
    ##  6            5 AMASYA         TR8         Bati Karadeniz    TR83       
    ##  7            6 ANKARA         TR5         Bati Anadolu      TR51       
    ##  8            7 ANTALYA        TR6         Akdeniz           TR61       
    ##  9           75 ARDAHAN        TRA         Kuzeydogu Anadolu TRA2       
    ## 10            8 ARTVIN         TR9         Dogu Karadeniz    TR90       
    ## # ℹ 71 more rows

    Yukarıdaki satır komutları çalıştırıldığında plate_number’dan NUTS_level2’ye kadar olan tüm sütunlardan oluşan yeni bir veri seti üretilecektir.

    TR_stu |>
      select(!plate_number:NUTS_level2)
    ## # A tibble: 81 × 352
    ##    gadm_L3number metropolitan student_s_pre_m_21_22 student_s_pre_f_21_22
    ##    <fct>         <fct>                        <dbl>                 <dbl>
    ##  1 1             1                            22426                 21309
    ##  2 2             0                             8659                  8078
    ##  3 3             0                             6466                  6157
    ##  4 4             0                             6835                  6514
    ##  5 5             0                             3844                  3536
    ##  6 6             0                             3048                  2931
    ##  7 7             1                            38750                 37294
    ##  8 8             1                            23178                 21968
    ##  9 9             0                              877                   882
    ## 10 10            0                             1590                  1495
    ## # ℹ 71 more rows
    ## # ℹ 348 more variables: student_s_pre_total_21_22 <dbl>,
    ## #   student_p_pre_m_21_22 <dbl>, student_p_pre_f_21_22 <dbl>,
    ## #   student_p_pre_total_21_22 <dbl>, student_pre_total_21_22 <dbl>,
    ## #   student_s_pre_m_20_21 <dbl>, student_s_pre_f_20_21 <dbl>,
    ## #   student_s_pre_total_20_21 <dbl>, student_p_pre_m_20_21 <dbl>,
    ## #   student_p_pre_f_20_21 <dbl>, student_p_pre_total_20_21 <dbl>, …

    İki değişken arasındaki değişkenler haricindeki diğer tüm değişkenleri seçmek için ise yukarıdaki satır komutlarını kullanabiliriz (! işareti R’da “değil” anlamında kullanılmaktadır).

    select() fonksiyonu where() fonksiyonu ile birlikte kullanılan tek tipteki değişkenler seçilebilir.

    TR_stu |>
      select(where(is.factor))
    ## # A tibble: 81 × 6
    ##    gadm_L3number province_upper NUTS_level1 NUTS_level1_name  NUTS_level2
    ##    <fct>         <fct>          <fct>       <fct>             <fct>      
    ##  1 1             ADANA          TR6         Akdeniz           TR62       
    ##  2 2             ADIYAMAN       TRC         Guneydogu Anadolu TRC1       
    ##  3 3             AFYONKARAHISAR TR3         Ege               TR33       
    ##  4 4             AGRI           TRA         Kuzeydogu Anadolu TRA2       
    ##  5 5             AKSARAY        TR7         Orta Anadolu      TR71       
    ##  6 6             AMASYA         TR8         Bati Karadeniz    TR83       
    ##  7 7             ANKARA         TR5         Bati Anadolu      TR51       
    ##  8 8             ANTALYA        TR6         Akdeniz           TR61       
    ##  9 9             ARDAHAN        TRA         Kuzeydogu Anadolu TRA2       
    ## 10 10            ARTVIN         TR9         Dogu Karadeniz    TR90       
    ## # ℹ 71 more rows
    ## # ℹ 1 more variable: metropolitan <fct>

    Bu özellikler dışında, select() fonksiyonuna yardımcı fonksiyonlardan oldukça yararlı olabilir. Örneğin starts_with() fonksiyonu ile ilk karakterleri bilinen değişkenlerden oluşan yeni bir veri seti yaratılabilir.

    TR_stu |>
      select(starts_with("student_all"))
    ## # A tibble: 81 × 10
    ##    student_all_total_21_22 student_all_total_20_21 student_all_total_19_20
    ##                      <dbl>                   <dbl>                   <dbl>
    ##  1                  572664                  534741                  543530
    ##  2                  180532                  167921                  165939
    ##  3                  151012                  146277                  147453
    ##  4                  156041                  153365                  154207
    ##  5                   96587                   93937                   91745
    ##  6                   64467                   62597                   63149
    ##  7                 1176294                 1109534                 1135233
    ##  8                  557063                  520722                  527756
    ##  9                   19781                   19307                   19324
    ## 10                   27896                   27257                   27491
    ## # ℹ 71 more rows
    ## # ℹ 7 more variables: student_all_total_18_19 <dbl>,
    ## #   student_all_total_17_18 <dbl>, student_all_total_16_17 <dbl>,
    ## #   student_all_total_15_16 <dbl>, student_all_total_14_15 <dbl>,
    ## #   student_all_total_13_14 <dbl>, student_all_total_12_13 <dbl>

    Yukarıdaki satır komutları çalıştırıldığında değişken ismi student_all ile başlayan toplam öğrenci sayılarını içeren değişkenlerden oluşan yeni bir veri seti elde edilecektir. Bu özellikle TIMSS, PISA gibi geniş ölçekli veri setlerinde veri düzenleme için oldukça kullanışlıdır. Çünkü bu uygulamaların sonrasında paylaşılan veri setlerindeki değişken isimleri kodlar içermekte ve aynı kod ile başlayan değişkenler genellikle aynı yapı ile ilişkili olmaktadır.

    Değişken isminin baş karakterleri haricinde son karakterleri ile ilgili bir işlem de yapmak gerekebilir.

    TR_stu |>
      select(ends_with("_21_22"))
    ## # A tibble: 81 × 35
    ##    student_s_pre_m_21_22 student_s_pre_f_21_22 student_s_pre_total_21_22
    ##                    <dbl>                 <dbl>                     <dbl>
    ##  1                 22426                 21309                     43735
    ##  2                  8659                  8078                     16737
    ##  3                  6466                  6157                     12623
    ##  4                  6835                  6514                     13349
    ##  5                  3844                  3536                      7380
    ##  6                  3048                  2931                      5979
    ##  7                 38750                 37294                     76044
    ##  8                 23178                 21968                     45146
    ##  9                   877                   882                      1759
    ## 10                  1590                  1495                      3085
    ## # ℹ 71 more rows
    ## # ℹ 32 more variables: student_p_pre_m_21_22 <dbl>,
    ## #   student_p_pre_f_21_22 <dbl>, student_p_pre_total_21_22 <dbl>,
    ## #   student_pre_total_21_22 <dbl>, student_s_ele_m_21_22 <dbl>,
    ## #   student_s_ele_f_21_22 <dbl>, student_s_ele_total_21_22 <dbl>,
    ## #   student_p_ele_m_21_22 <dbl>, student_p_ele_f_21_22 <dbl>,
    ## #   student_p_ele_total_21_22 <dbl>, student_ele_total_21_22 <dbl>, …

    Yukarıdaki satır komutu çalıştırıldığında, sonunda _21_22 karakterlerini içeren değişkenlerden oluşan yeni bir veri seti elde edilecektir. Bu veri seti yalnızca 2021-2022 eğitim yılına ilişkin verilerden oluşan bir alt veri setidir.

    TR_stu |>
      select(contains("ele"))
    ## # A tibble: 81 × 70
    ##    student_s_ele_m_21_22 student_s_ele_f_21_22 student_s_ele_total_21_22
    ##                    <dbl>                 <dbl>                     <dbl>
    ##  1                 84590                 79911                    164501
    ##  2                 25507                 24008                     49515
    ##  3                 21482                 20148                     41630
    ##  4                 24321                 22980                     47301
    ##  5                 13510                 12926                     26436
    ##  6                  8213                  7544                     15757
    ##  7                147387                140462                    287849
    ##  8                 72208                 67161                    139369
    ##  9                  2584                  2357                      4941
    ## 10                  3732                  3506                      7238
    ## # ℹ 71 more rows
    ## # ℹ 67 more variables: student_p_ele_m_21_22 <dbl>,
    ## #   student_p_ele_f_21_22 <dbl>, student_p_ele_total_21_22 <dbl>,
    ## #   student_ele_total_21_22 <dbl>, student_s_ele_m_20_21 <dbl>,
    ## #   student_s_ele_f_20_21 <dbl>, student_s_ele_total_20_21 <dbl>,
    ## #   student_p_ele_m_20_21 <dbl>, student_p_ele_f_20_21 <dbl>,
    ## #   student_p_ele_total_20_21 <dbl>, student_ele_total_20_21 <dbl>, …

    Yukarıdaki satır komutları ile de içinde ele karakterleri bulunan değişkenler seçilebilir. Bu örnek uygulamada elde edilen veri seti yalnızca ilkokul (elementary) verilerini içerecektir.

    7.6 rename() Fonksiyonu

    rename() fonksiyonu ile değişken isimleri değiştirilebilir. Basitçe, gadm_L3number değişkeninin ismini L3 olarak değiştirelim.

    TR_stu |>
      rename(L3 = gadm_L3number)
    ## # A tibble: 81 × 357
    ##    L3    plate_number province_upper NUTS_level1 NUTS_level1_name  NUTS_level2
    ##    <fct>        <dbl> <fct>          <fct>       <fct>             <fct>      
    ##  1 1                1 ADANA          TR6         Akdeniz           TR62       
    ##  2 2                2 ADIYAMAN       TRC         Guneydogu Anadolu TRC1       
    ##  3 3                3 AFYONKARAHISAR TR3         Ege               TR33       
    ##  4 4                4 AGRI           TRA         Kuzeydogu Anadolu TRA2       
    ##  5 5               68 AKSARAY        TR7         Orta Anadolu      TR71       
    ##  6 6                5 AMASYA         TR8         Bati Karadeniz    TR83       
    ##  7 7                6 ANKARA         TR5         Bati Anadolu      TR51       
    ##  8 8                7 ANTALYA        TR6         Akdeniz           TR61       
    ##  9 9               75 ARDAHAN        TRA         Kuzeydogu Anadolu TRA2       
    ## 10 10               8 ARTVIN         TR9         Dogu Karadeniz    TR90       
    ## # ℹ 71 more rows
    ## # ℹ 351 more variables: metropolitan <fct>, student_s_pre_m_21_22 <dbl>,
    ## #   student_s_pre_f_21_22 <dbl>, student_s_pre_total_21_22 <dbl>,
    ## #   student_p_pre_m_21_22 <dbl>, student_p_pre_f_21_22 <dbl>,
    ## #   student_p_pre_total_21_22 <dbl>, student_pre_total_21_22 <dbl>,
    ## #   student_s_pre_m_20_21 <dbl>, student_s_pre_f_20_21 <dbl>,
    ## #   student_s_pre_total_20_21 <dbl>, student_p_pre_m_20_21 <dbl>, …

    Birden fazla değişkenin ismi, tek tek isimleri girilerek değiştirilebilir.

    TR_stu |>
      rename(L3 = gadm_L3number, plaka = plate_number, sehir = province_upper)
    ## # A tibble: 81 × 357
    ##    L3    plaka sehir       NUTS_level1 NUTS_level1_name NUTS_level2 metropolitan
    ##    <fct> <dbl> <fct>       <fct>       <fct>            <fct>       <fct>       
    ##  1 1         1 ADANA       TR6         Akdeniz          TR62        1           
    ##  2 2         2 ADIYAMAN    TRC         Guneydogu Anado… TRC1        0           
    ##  3 3         3 AFYONKARAH… TR3         Ege              TR33        0           
    ##  4 4         4 AGRI        TRA         Kuzeydogu Anado… TRA2        0           
    ##  5 5        68 AKSARAY     TR7         Orta Anadolu     TR71        0           
    ##  6 6         5 AMASYA      TR8         Bati Karadeniz   TR83        0           
    ##  7 7         6 ANKARA      TR5         Bati Anadolu     TR51        1           
    ##  8 8         7 ANTALYA     TR6         Akdeniz          TR61        1           
    ##  9 9        75 ARDAHAN     TRA         Kuzeydogu Anado… TRA2        0           
    ## 10 10        8 ARTVIN      TR9         Dogu Karadeniz   TR90        0           
    ## # ℹ 71 more rows
    ## # ℹ 350 more variables: student_s_pre_m_21_22 <dbl>,
    ## #   student_s_pre_f_21_22 <dbl>, student_s_pre_total_21_22 <dbl>,
    ## #   student_p_pre_m_21_22 <dbl>, student_p_pre_f_21_22 <dbl>,
    ## #   student_p_pre_total_21_22 <dbl>, student_pre_total_21_22 <dbl>,
    ## #   student_s_pre_m_20_21 <dbl>, student_s_pre_f_20_21 <dbl>,
    ## #   student_s_pre_total_20_21 <dbl>, student_p_pre_m_20_21 <dbl>, …

    Görüldüğü üzere üç değişkenin ismi de değişmiştir.

    7.7 group_by() Fonksiyonu

    group_by() fonksiyonu veri setini değişkenlere göre gruplara ayırmaya yarar. Bu fonksiyon ile gruplara ayrılan veri sonrasında gruplara göre analiz edilebilir.

    TR_stu |>
      group_by(NUTS_level1_name)
    ## # A tibble: 81 × 357
    ## # Groups:   NUTS_level1_name [12]
    ##    gadm_L3number plate_number province_upper NUTS_level1 NUTS_level1_name 
    ##    <fct>                <dbl> <fct>          <fct>       <fct>            
    ##  1 1                        1 ADANA          TR6         Akdeniz          
    ##  2 2                        2 ADIYAMAN       TRC         Guneydogu Anadolu
    ##  3 3                        3 AFYONKARAHISAR TR3         Ege              
    ##  4 4                        4 AGRI           TRA         Kuzeydogu Anadolu
    ##  5 5                       68 AKSARAY        TR7         Orta Anadolu     
    ##  6 6                        5 AMASYA         TR8         Bati Karadeniz   
    ##  7 7                        6 ANKARA         TR5         Bati Anadolu     
    ##  8 8                        7 ANTALYA        TR6         Akdeniz          
    ##  9 9                       75 ARDAHAN        TRA         Kuzeydogu Anadolu
    ## 10 10                       8 ARTVIN         TR9         Dogu Karadeniz   
    ## # ℹ 71 more rows
    ## # ℹ 352 more variables: NUTS_level2 <fct>, metropolitan <fct>,
    ## #   student_s_pre_m_21_22 <dbl>, student_s_pre_f_21_22 <dbl>,
    ## #   student_s_pre_total_21_22 <dbl>, student_p_pre_m_21_22 <dbl>,
    ## #   student_p_pre_f_21_22 <dbl>, student_p_pre_total_21_22 <dbl>,
    ## #   student_pre_total_21_22 <dbl>, student_s_pre_m_20_21 <dbl>,
    ## #   student_s_pre_f_20_21 <dbl>, student_s_pre_total_20_21 <dbl>, …

    Yukarıdaki satır komutları çalıştırıldığında veri, istatistiki bölge birimlerine (düzey 1) göre gruplandırılacaktır. Veri setinde herhangi bir değişiklik olmadığını fark etmiş olabilirsiniz. Ancak, R’ın verdiği çıktıda Groups: NUTS_level1_name [12] yazacaktır. Bu, verinin 12 gruba ayrıldığını göstermektedir. Gerçekten de veri setinde 12 istatistiki bölge birimi bulunmaktadır. Bu fonksiyonun işlevi, diğer fonksiyonlarla birleştirildiğinde daha anlamlı görünebilir. Bu nedenle bu fonksiyon, sonraki başlıklarda tekrar ele alınacaktır.

    7.8 summarize() Fonksiyonu

    summarize() fonksiyonu bir başka gruplama fonksiyonudur. Pek çok amaçla kullanılabilir. Örneğin;

    TR_stu |>
      group_by(NUTS_level1_name) |>
      summarize(ort_dev_anaokulu = mean(student_s_pre_f_20_21))
    ## # A tibble: 12 × 2
    ##    NUTS_level1_name  ort_dev_anaokulu
    ##    <fct>                        <dbl>
    ##  1 Akdeniz                      9962.
    ##  2 Bati Anadolu                11090.
    ##  3 Bati Karadeniz               2545.
    ##  4 Bati Marmara                 3608.
    ##  5 Dogu Karadeniz               2625.
    ##  6 Dogu Marmara                 6178.
    ##  7 Ege                          6501.
    ##  8 Guneydogu Anadolu           10147.
    ##  9 Istanbul                    55870 
    ## 10 Kuzeydogu Anadolu            2635 
    ## 11 Orta Anadolu                 3160.
    ## 12 Ortadogu Anadolu             4331.

    Yukarıdaki satır komutları çalıştırıldığında, önce veri NUTS_level1_name değişkenine göre gruplandırılacaktır (az önce örneklendirmiştik, 12 gruba ayrılacaktır). Ardından, 2020-2021 eğitim yılında devlet ana okullarında eğitim gören kız öğrencilerin sayısının ortalamasını bu bölgelere göre hesaplayacaktır. Sonuç olarak ise 12 satırlık bir veri sunacaktır. Bu veri setinde istatistiki bölge birimleri ve her bir istatistiki bölge birimindeki öğrenci sayısı ortalaması yer almaktadır. Tahmin edileceği üzere, mean() fonksiyonunun haricinde pek çok farklı fonksiyon kullanılabilir.

    7.9 slice_*() Fonksiyonları

    Pek çok slice_*() fonksiyonu bulunmaktadır. Bu fonksiyonlar, genel itibarıyla veriyi dilimlemeye yarar.

    # veri setinin ilk 5 satırını seçmek için
    TR_stu |>
      slice_head(n = 5)
    ## # A tibble: 5 × 357
    ##   gadm_L3number plate_number province_upper NUTS_level1 NUTS_level1_name 
    ##   <fct>                <dbl> <fct>          <fct>       <fct>            
    ## 1 1                        1 ADANA          TR6         Akdeniz          
    ## 2 2                        2 ADIYAMAN       TRC         Guneydogu Anadolu
    ## 3 3                        3 AFYONKARAHISAR TR3         Ege              
    ## 4 4                        4 AGRI           TRA         Kuzeydogu Anadolu
    ## 5 5                       68 AKSARAY        TR7         Orta Anadolu     
    ## # ℹ 352 more variables: NUTS_level2 <fct>, metropolitan <fct>,
    ## #   student_s_pre_m_21_22 <dbl>, student_s_pre_f_21_22 <dbl>,
    ## #   student_s_pre_total_21_22 <dbl>, student_p_pre_m_21_22 <dbl>,
    ## #   student_p_pre_f_21_22 <dbl>, student_p_pre_total_21_22 <dbl>,
    ## #   student_pre_total_21_22 <dbl>, student_s_pre_m_20_21 <dbl>,
    ## #   student_s_pre_f_20_21 <dbl>, student_s_pre_total_20_21 <dbl>,
    ## #   student_p_pre_m_20_21 <dbl>, student_p_pre_f_20_21 <dbl>, …
    # veri setinin son 3 satırını seçmek için
    TR_stu |>
      slice_tail(n = 3)
    ## # A tibble: 3 × 357
    ##   gadm_L3number plate_number province_upper NUTS_level1 NUTS_level1_name
    ##   <fct>                <dbl> <fct>          <fct>       <fct>           
    ## 1 79                      77 YALOVA         TR4         Dogu Marmara    
    ## 2 80                      66 YOZGAT         TR7         Orta Anadolu    
    ## 3 81                      67 ZONGULDAK      TR8         Bati Karadeniz  
    ## # ℹ 352 more variables: NUTS_level2 <fct>, metropolitan <fct>,
    ## #   student_s_pre_m_21_22 <dbl>, student_s_pre_f_21_22 <dbl>,
    ## #   student_s_pre_total_21_22 <dbl>, student_p_pre_m_21_22 <dbl>,
    ## #   student_p_pre_f_21_22 <dbl>, student_p_pre_total_21_22 <dbl>,
    ## #   student_pre_total_21_22 <dbl>, student_s_pre_m_20_21 <dbl>,
    ## #   student_s_pre_f_20_21 <dbl>, student_s_pre_total_20_21 <dbl>,
    ## #   student_p_pre_m_20_21 <dbl>, student_p_pre_f_20_21 <dbl>, …
    # veri setindeki bir değişkenin en küçük 3 değerini içeren satırları seçmek için
    TR_stu |>
      slice_min(student_pre_total_19_20, n = 3)
    ## # A tibble: 3 × 357
    ##   gadm_L3number plate_number province_upper NUTS_level1 NUTS_level1_name 
    ##   <fct>                <dbl> <fct>          <fct>       <fct>            
    ## 1 15                      69 BAYBURT        TRA         Kuzeydogu Anadolu
    ## 2 76                      62 TUNCELI        TRB         Ortadogu Anadolu 
    ## 3 9                       75 ARDAHAN        TRA         Kuzeydogu Anadolu
    ## # ℹ 352 more variables: NUTS_level2 <fct>, metropolitan <fct>,
    ## #   student_s_pre_m_21_22 <dbl>, student_s_pre_f_21_22 <dbl>,
    ## #   student_s_pre_total_21_22 <dbl>, student_p_pre_m_21_22 <dbl>,
    ## #   student_p_pre_f_21_22 <dbl>, student_p_pre_total_21_22 <dbl>,
    ## #   student_pre_total_21_22 <dbl>, student_s_pre_m_20_21 <dbl>,
    ## #   student_s_pre_f_20_21 <dbl>, student_s_pre_total_20_21 <dbl>,
    ## #   student_p_pre_m_20_21 <dbl>, student_p_pre_f_20_21 <dbl>, …
    # veri setindeki bir değişkenin en büyük 3 değerini içeren satırları seçmek için
    TR_stu |>
      slice_max(student_pre_total_19_20, n = 3)
    ## # A tibble: 3 × 357
    ##   gadm_L3number plate_number province_upper NUTS_level1 NUTS_level1_name
    ##   <fct>                <dbl> <fct>          <fct>       <fct>           
    ## 1 40                      34 ISTANBUL       TR1         Istanbul        
    ## 2 7                        6 ANKARA         TR5         Bati Anadolu    
    ## 3 41                      35 IZMIR          TR3         Ege             
    ## # ℹ 352 more variables: NUTS_level2 <fct>, metropolitan <fct>,
    ## #   student_s_pre_m_21_22 <dbl>, student_s_pre_f_21_22 <dbl>,
    ## #   student_s_pre_total_21_22 <dbl>, student_p_pre_m_21_22 <dbl>,
    ## #   student_p_pre_f_21_22 <dbl>, student_p_pre_total_21_22 <dbl>,
    ## #   student_pre_total_21_22 <dbl>, student_s_pre_m_20_21 <dbl>,
    ## #   student_s_pre_f_20_21 <dbl>, student_s_pre_total_20_21 <dbl>,
    ## #   student_p_pre_m_20_21 <dbl>, student_p_pre_f_20_21 <dbl>, …
    # veri setinden rastgele 4 satır seçmek için (her çalıştırmada farklı satırların seçilmesi mümkündür)
    TR_stu |>
      slice_sample(n = 4)
    ## # A tibble: 4 × 357
    ##   gadm_L3number plate_number province_upper NUTS_level1 NUTS_level1_name
    ##   <fct>                <dbl> <fct>          <fct>       <fct>           
    ## 1 29                      23 ELAZIG         TRB         Ortadogu Anadolu
    ## 2 80                      66 YOZGAT         TR7         Orta Anadolu    
    ## 3 47                      38 KAYSERI        TR7         Orta Anadolu    
    ## 4 6                        5 AMASYA         TR8         Bati Karadeniz  
    ## # ℹ 352 more variables: NUTS_level2 <fct>, metropolitan <fct>,
    ## #   student_s_pre_m_21_22 <dbl>, student_s_pre_f_21_22 <dbl>,
    ## #   student_s_pre_total_21_22 <dbl>, student_p_pre_m_21_22 <dbl>,
    ## #   student_p_pre_f_21_22 <dbl>, student_p_pre_total_21_22 <dbl>,
    ## #   student_pre_total_21_22 <dbl>, student_s_pre_m_20_21 <dbl>,
    ## #   student_s_pre_f_20_21 <dbl>, student_s_pre_total_20_21 <dbl>,
    ## #   student_p_pre_m_20_21 <dbl>, student_p_pre_f_20_21 <dbl>, …

    7.10 Pipe (|>) Bağlantı Operatörü

    Pipe (|>) bağlantı operatörü fonksiyonları birbirine bağlamak için kullanılan bir operatördür. Oldukça geniş bir kullanımı vardır. Bu bölümdeki örneklerden de fark ettiğiniz üzere, geleneksel kod yazımından oldukça farklıdır. Genellikle kod yazarken (Excel’de fonksiyon yazarken olduğu gibi) öncelikle en içteki fonksiyon işlevini yerine getirir, sonra onun dışındaki, sonra onun dışındaki… Bu şekilde devam eden yapı hemen hemen her programlama dilinde mevcuttur. Ancak, |> ile sağa doğru akan, sıralı bir fonksiyon yazımı ve fonksiyonların işlevini yerine getirmesi söz konusudur. Pek çok kişiye bu kodları okumak daha kolay geldiği için, bu bağlantı operatörü yaygın olarak kullanılmaktadır. Pek çok kaynakta bağlantı operatörünü %>% şeklinde görmüş olmanız mümkündür. Eskiden bu şekilde magrittr paketi aracılığı ile kullanılıyor idi ve klavyedeki kısa yol tuşu Ctrl + Shift + M idi. Ancak, Wickham ve arkadaşları (2023) artık |> kullanımını önermektedir. Bu şekilde kullanım daha kolay. Klavyedeki tuşlar ile bu iki sembol bir araya getirilebilir ya da Tools > Global Options... yolu izlenerek açılan Options (ayarlar) penceresinden pipe operatörünün kısa yol tuşu düzenlenebilir. Bunun için ayarlar penceresi açıldıktan sonra, Code bölümüne gelmeli ve Use native pipe operator seçeneğini işaretlemelisiniz. OK denildikten sonra, artık Ctrl + Shift + M kısa yol tuşları ile bu yeni operatörü kullanabilirsiniz. Şimdiye kadar öğrendiğimiz, veri düzenlemede sıkça kullanılan birkaç fonksiyonu birlikte kullanarak bir veri düzenlemesi yapalım.

    TR_stu |>
      filter(metropolitan == 1) |>
      select(where(is.double))
    ## # A tibble: 30 × 351
    ##    plate_number student_s_pre_m_21_22 student_s_pre_f_21_22
    ##           <dbl>                 <dbl>                 <dbl>
    ##  1            1                 22426                 21309
    ##  2            6                 38750                 37294
    ##  3            7                 23178                 21968
    ##  4            9                  9907                  9351
    ##  5           10                  8433                  8093
    ##  6           16                 23234                 21894
    ##  7           20                  9313                  8927
    ##  8           21                 25021                 23239
    ##  9           25                  8613                  8189
    ## 10           26                  7041                  6555
    ## # ℹ 20 more rows
    ## # ℹ 348 more variables: student_s_pre_total_21_22 <dbl>,
    ## #   student_p_pre_m_21_22 <dbl>, student_p_pre_f_21_22 <dbl>,
    ## #   student_p_pre_total_21_22 <dbl>, student_pre_total_21_22 <dbl>,
    ## #   student_s_pre_m_20_21 <dbl>, student_s_pre_f_20_21 <dbl>,
    ## #   student_s_pre_total_20_21 <dbl>, student_p_pre_m_20_21 <dbl>,
    ## #   student_p_pre_f_20_21 <dbl>, student_p_pre_total_20_21 <dbl>, …

    Yukarıdaki satır komutları ile elde edilen yeni veri setine bakalım. Ardından, bu satır komutlarının sırası ile neleri gerçekleştirdiğini bulalım. En solda veri seti yer almaktadır. Ardından bir pipe operatörü kullanılarak bu veri seti ile bir şey yapılmasının istendiği R’a söylenmiştir. filter() fonksiyonu ile veri seti filtrelenmiştir. Burada yeni veri setinde yalnızca metropolitan değerinin 1 olduğu satırların olması istenmiştir (yani büyük şehir belediyesi olan şehirler). Satır komutları burada sonlansa idi, yalnızca büyük şehir verilerinden oluşan bir veri seti elde edilmiş olacaktı. Ancak bu satırın sonuna getirilen yeni bir pipe bağlantı operatörü ile yeni elde edilen veri seti üzerinde başka işlemler yapılması istenmiştir. select() fonksiyonu ile büyük şehir verilerini içeren yeni veri setindeki double türündeki nümerik veriler içeren değişkenlerin seçilmesi istenmiştir. Böylelikle, yalnızca büyük şehirlere ait sayısal değerler içeren bir veri seti oluşturulmuştur.

    Bir başka örnek deneyelim.

    TR_stu |>
      filter(student_s_pre_total_21_22 > 10000 & metropolitan == 0) |>
      select(plate_number:NUTS_level2) |>
      rename(plaka = plate_number, sehir = province_upper) |> 
      arrange(plaka)
    ## # A tibble: 8 × 5
    ##   plaka sehir          NUTS_level1 NUTS_level1_name  NUTS_level2
    ##   <dbl> <fct>          <fct>       <fct>             <fct>      
    ## 1     2 ADIYAMAN       TRC         Guneydogu Anadolu TRC1       
    ## 2     3 AFYONKARAHISAR TR3         Ege               TR33       
    ## 3     4 AGRI           TRA         Kuzeydogu Anadolu TRA2       
    ## 4    58 SIVAS          TR7         Orta Anadolu      TR72       
    ## 5    60 TOKAT          TR8         Bati Karadeniz    TR83       
    ## 6    72 BATMAN         TRC         Guneydogu Anadolu TRC3       
    ## 7    73 SIRNAK         TRC         Guneydogu Anadolu TRC3       
    ## 8    80 OSMANIYE       TR6         Akdeniz           TR63

    Yukarıdaki satır komutları ile elde edilen yeni veri setine bakalım. Ardından, bu satır komutlarının sırası ile neleri gerçekleştirdiğini bulalım. Burada öncelikle veri seti iki sınama ile filtrelenmiş. Buna göre 2021-2022 eğitim yılında devlet anaokulundaki öğrenci sayısı 10000’den büyük olan büyük şehir olmayan şehirlerin olduğu satırlardan oluşan bir veri seti elde edilmiştir. Ardından plate_number değişkeninden NUTS_level2 değişkenine kadar olan sütunların olduğu kısmı seçilmiştir. Sonrasında rename() fonksiyonu ile plate_number ve province_upper değişkenlerinin adı değiştirilmiştir. Ardından plaka değişkeninin (önceki ismi plate_number idi, burada dördüncü satırda ismi değiştirildi) değerlerinin küçükten büyüğe sıralandığı hali ile yeni bir veri seti sunulması istenmiştir. Bu nedenle 8 satırdan, 5 değişkenden oluşan bir veri seti elde edilmiştir.

    7.11 Veri Setlerini Birleştirme (Join Fonksiyonları)

    Sosyal bilimler alanında yürütülen çalışmaların veri toplama süreci sonunda elde edilen veri setleri bir karmaşa içinde olabilir. Bu veri setlerinin birleştirilmesi de ciddi bir uğraş haline gelebilir. Örneğin, boylamsal bir çalışmada deneklerden birkaçı ilk uygulamaya katılmamış olabilir, ancak ikinci uygulamaya katılmış olabilir. Bu durumda iki veri setindeki satır sayıları farklılaşabilir. Geniş çaplı bir çalışmada, veri toplayıcılar farklı olabilir ve veri girişi esnasında değişken isimlerini farklı şekillerde girmiş olabilirler. Bu verilerin R’da dplyr paketi yardımıyla nasıl birleştirilebileceğini, örneklerle görelim. Öncelikle üzerinde çalışabileceğimiz üç ayrı veri seti oluşturalım. Bu veri setlerinde toplamda sekiz öğrenciye ilişkin veriler bulunmaktadır. Farklı sınıf düzeylerindeki öğrencilerin matematik okuryazarlığına ilişkin iki ölçüm ve sözel becerileriyle ilgili bir ölçüm alınmış olsun.

    ogr_ID <- 1:6
    sinif <- rep(7:8, 3)
    matematik_O1 <- c(40, 40, 50, 80, 60, 40)
    veri1 <- data.frame(ogr_ID, sinif, matematik_O1)
    veri1
    ##   ogr_ID sinif matematik_O1
    ## 1      1     7           40
    ## 2      2     8           40
    ## 3      3     7           50
    ## 4      4     8           80
    ## 5      5     7           60
    ## 6      6     8           40
    ID <- 1:8
    sinif <- c(7, 8, 7, 8, 7, NA, 7, 8)
    matematik_O2 <- c(45, 45, 60, 80, 55, 45, 60, 60)
    veri2 <- data.frame(ID, sinif, matematik_O2)
    veri2
    ##   ID sinif matematik_O2
    ## 1  1     7           45
    ## 2  2     8           45
    ## 3  3     7           60
    ## 4  4     8           80
    ## 5  5     7           55
    ## 6  6    NA           45
    ## 7  7     7           60
    ## 8  8     8           60
    ogr_ID <- 1:5
    sozel <- c(100, 90, 90, 80, 80)
    veri3 <- data.frame(ogr_ID, sozel)
    veri3
    ##   ogr_ID sozel
    ## 1      1   100
    ## 2      2    90
    ## 3      3    90
    ## 4      4    80
    ## 5      5    80

    Görüldüğü üzere veri1’de 6 öğrenci bulunurken, veri2’de 8 öğrenci bulunmaktadır. Ancak ID’lerden anlaşıldığı üzere bu 6 öğrenci aynı öğrencilerdir. veri3 ise aynı öğrenciler ile ilgili farklı bilgilerin yer aldığı bir nesnedir.

    7.11.1 inner_join()

    Burada iki uygulamaya yer verilmiştir. Oluşturulan yeni_veri1 isimli nesne, veri1 ve veri2’nin birleşimi iken yeni_veri2 isimli nesne veri1, veri2 ve veri3’ün birleşiminden oluşmaktadır.

    # iki veri setinin birleştirilmesi
    yeni_veri1 <- veri1 |>  
      inner_join(veri2, by = c("ogr_ID" = "ID"))
    yeni_veri1
    ##   ogr_ID sinif.x matematik_O1 sinif.y matematik_O2
    ## 1      1       7           40       7           45
    ## 2      2       8           40       8           45
    ## 3      3       7           50       7           60
    ## 4      4       8           80       8           80
    ## 5      5       7           60       7           55
    ## 6      6       8           40      NA           45
    # üç veri setinin birleştirilmesi
    yeni_veri2 <- veri1 |> 
      inner_join(veri2, by = c("ogr_ID" = "ID")) |>
      inner_join(veri3)
    ## Joining with `by = join_by(ogr_ID)`
    yeni_veri2
    ##   ogr_ID sinif.x matematik_O1 sinif.y matematik_O2 sozel
    ## 1      1       7           40       7           45   100
    ## 2      2       8           40       8           45    90
    ## 3      3       7           50       7           60    90
    ## 4      4       8           80       8           80    80
    ## 5      5       7           60       7           55    80

    yeniveri1 incelendiğinde görülecektir ki, inner_join() fonksiyonu iki veri setini ID değişkenine göre birleştirmekte (bu sırada ID değişkenindeki kesişimleri ele alır) ve her iki veri setindeki değişkenleri yeni nesneye aktarmaktadır.

    yeniveri2 incelendiğinde görülecektir ki, üç veri seti birleştirilirken yine ID’lerin kesişimi ele alınmış ve tüm veri setlerindeki tüm değişkenler yeni veri nesnesine kaydedilmiştir.

    7.11.2 left_join()

    Burada iki uygulamaya yer verilmiştir. Oluşturulan yeni_veri3 isimli nesne, veri1 ve veri2’nin birleşimi iken yeni_veri4 isimli nesne veri1, veri2 ve veri3’ün birleşiminden oluşmaktadır.

    # iki veri setinin birleştirilmesi
    yeni_veri3 <- veri1 |>  
      left_join(veri2, by = c("ogr_ID" = "ID"))
    yeni_veri3
    ##   ogr_ID sinif.x matematik_O1 sinif.y matematik_O2
    ## 1      1       7           40       7           45
    ## 2      2       8           40       8           45
    ## 3      3       7           50       7           60
    ## 4      4       8           80       8           80
    ## 5      5       7           60       7           55
    ## 6      6       8           40      NA           45
    # üç veri setinin birleştirilmesi
    yeni_veri4 <- veri1 |>  
      left_join(veri2, by = c("ogr_ID" = "ID")) |>
      left_join(veri3)
    ## Joining with `by = join_by(ogr_ID)`
    yeni_veri4
    ##   ogr_ID sinif.x matematik_O1 sinif.y matematik_O2 sozel
    ## 1      1       7           40       7           45   100
    ## 2      2       8           40       8           45    90
    ## 3      3       7           50       7           60    90
    ## 4      4       8           80       8           80    80
    ## 5      5       7           60       7           55    80
    ## 6      6       8           40      NA           45    NA

    yeni_veri3 incelendiğinde görülecektir ki, left_join() fonksiyonu iki veri setini ID değişkenine göre birleştirirken soldaki (ilk) veri setini göz önünde bulundurarak kesişimleri ele almış ve iki veri setindeki tüm değişkenleri yeni veri nesnesine kaydetmiştir.

    yeni_veri4 incelendiğinde görülecektir ki, üç veri seti birleştirilirken yine ilk önce ID’lerin kesişimi ele alınmıştır. İkinci aşamada ise eldeki 6 öğrencilik veri seti öncelenmiş ve bu 6 öğrenci üzerinden veri setlerindeki tüm değişkenler yeni veri nesnesine kaydedilmiştir (Burada dikkat edilmesi gereken şudur: eğer veri3’ün eklenmesi durumunda doğrudan kesişim alınsa idi yeni veri setinde 5 öğrenciye ilişkin veri olması gerekirdi).

    7.11.3 right_join()

    Burada iki uygulamaya yer verilmiştir. Oluşturulan yeni_veri5 isimli nesne, veri1 ve veri2’nin birleşimi iken yeni_veri6 isimli nesne veri1, veri2 ve veri3’ün birleşiminden oluşmaktadır.

    # iki veri setinin birleştirilmesi
    yeni_veri5 <- veri1 |>  
      right_join(veri2, by = c("ogr_ID" = "ID"))
    yeni_veri5
    ##   ogr_ID sinif.x matematik_O1 sinif.y matematik_O2
    ## 1      1       7           40       7           45
    ## 2      2       8           40       8           45
    ## 3      3       7           50       7           60
    ## 4      4       8           80       8           80
    ## 5      5       7           60       7           55
    ## 6      6       8           40      NA           45
    ## 7      7      NA           NA       7           60
    ## 8      8      NA           NA       8           60
    # üç veri setinin birleştirilmesi
    yeni_veri6 <- veri1 |>  
      right_join(veri2, y = veri2, by = c("ogr_ID" = "ID")) |>  
      right_join(veri3)
    ## Joining with `by = join_by(ogr_ID)`
    yeni_veri6
    ##   ogr_ID sinif.x matematik_O1 sinif.y matematik_O2 sozel
    ## 1      1       7           40       7           45   100
    ## 2      2       8           40       8           45    90
    ## 3      3       7           50       7           60    90
    ## 4      4       8           80       8           80    80
    ## 5      5       7           60       7           55    80

    right_join() fonksiyonu, left_join() fonksiyonun soldan (ilk setten) başlayarak yaptığı işlemleri sağdan başlayarak gerçekleştirmektedir. Bu nedenle iki veri setinden ikinci sırada birleştirme işlemine alınan veri2’deki 8 öğrenciden oluşan yeni veri seti (yeni_veri5) görüntülenmektedir.

    Üç veri setinin birleştirilmesi durumunda ise son aşamada veri3 ele alındığı için hem bu veri setindeki değişkenler, hem de 5 öğrenci öncelenmektedir.

    7.11.4 full_join()

    Burada iki uygulamaya yer verilmiştir. Oluşturulan yeni_veri7 isimli nesne, veri1 ve veri2’nin birleşimi iken yeni_veri8 isimli nesne veri1, veri2 ve veri3’ün birleşiminden oluşmaktadır.

    # iki veri setinin birleştirilmesi
    yeni_veri7 <- veri1 |>  
      full_join(veri2, by = c("ogr_ID" = "ID"))
    yeni_veri7
    ##   ogr_ID sinif.x matematik_O1 sinif.y matematik_O2
    ## 1      1       7           40       7           45
    ## 2      2       8           40       8           45
    ## 3      3       7           50       7           60
    ## 4      4       8           80       8           80
    ## 5      5       7           60       7           55
    ## 6      6       8           40      NA           45
    ## 7      7      NA           NA       7           60
    ## 8      8      NA           NA       8           60
    # üç veri setinin birleştirilmesi
    yeni_veri8 <- veri1 |>  
      full_join(veri2, y = veri2, by = c("ogr_ID" = "ID")) |>  
      full_join(veri3)
    ## Joining with `by = join_by(ogr_ID)`
    yeni_veri8
    ##   ogr_ID sinif.x matematik_O1 sinif.y matematik_O2 sozel
    ## 1      1       7           40       7           45   100
    ## 2      2       8           40       8           45    90
    ## 3      3       7           50       7           60    90
    ## 4      4       8           80       8           80    80
    ## 5      5       7           60       7           55    80
    ## 6      6       8           40      NA           45    NA
    ## 7      7      NA           NA       7           60    NA
    ## 8      8      NA           NA       8           60    NA

    full_join() fonksiyonu ile veri setleri doğrudan birleştirilmektedir (kümelerdeki birleşim işlemi gibi). yeni_veri7 incelenecek olursa veri1 ve veri2’deki tüm verilerin birleştirildiği görülecektir. Bir veri setinde 8, diğerinde 6 öğrenci olduğu için satır sayısı eksik olan veri setindeki eksik gözlemler yerine NA (kayıp veri) ataması yapılmaktadır.

    Üç veri seti birleştirilirken de yine aynı şekilde tüm değişkenler ve tüm satırlar yeni veri nesnesine kaydedilmektedir. Eksik olan gözlemler yerine NA ataması yapılmaktadır.

    7.11.5 semi_join()

    Burada tek uygulamaya yer verilmiştir. Oluşturulan yeni_veri9 isimli nesne, veri2 ve veri3’ün birleştirilmesi ile elde edilmiştir.

    yeni_veri9 <- veri2 |>  
      semi_join(veri3, by = c("ID" = "ogr_ID"))
    yeni_veri9
    ##   ID sinif matematik_O2
    ## 1  1     7           45
    ## 2  2     8           45
    ## 3  3     7           60
    ## 4  4     8           80
    ## 5  5     7           55

    yeni_veri9 incelendiğinde görülecektir ki, semi_join() fonksiyonu soldaki (ilk) veri setinin değişkenlerini ele almakta ve birinci ve ikinci veri setlerindeki ID değişkenine göre kesişen elemanları listelemektedir.

    7.11.6 anti_join()

    Burada tek uygulamaya yer verilmiştir. Oluşturulan yeni_veri10 isimli nesne, veri2 ve veri3’ün birleştirilmesi ile elde edilmiştir.

    yeni_veri10 <- veri2 |>  
      anti_join(veri3, by = c("ID" = "ogr_ID"))
    yeni_veri10
    ##   ID sinif matematik_O2
    ## 1  6    NA           45
    ## 2  7     7           60
    ## 3  8     8           60

    yeni_veri10 incelendiğinde görülecektir ki, anti_join() fonksiyonu yine soldaki (ilk) veri setinin değişkenlerini ele almakta ve birinci ve ikinci veri setlerindeki ID değişkenine göre kesişmeyen elemanları listelemektedir.

    Veri Setlerini Birleştirme başlığı altında yer alan ilk dört fonksiyon (inner_join, left_join, right_join ve full_join) birleştirme (mutating) fonksiyonları olarak adlandırılırken, son iki fonksiyon (semi_join ve anti_join) filtreleme (filtering) fonksiyonları olarak adlandırılmaktadır. Gerçekten de ilk dört fonksiyon ile veri setleri birleştirilerek yeni setler oluşturulurken, son iki fonksiyon aracılığı ile bir çeşit filtreleme yapılmaktadır. Birleştirme fonksiyonları ile ilgili kapsamlı bilgiye buradan, filtreleme fonksiyonları ile ilgili kapsamlı bilgiye ise buradan erişebilirsiniz. Birleştirme fonksiyonlarının çalışma mantığının anlaşılması biraz zaman alabilir. Ancak, hepsinin birbirinden farklı bir amaca hizmet ettiğinin farkında olunmalıdır. Veri birleştirme yaptıktan sonra elde edilen yeni veri setinin incelenmesi önemlidir.

    7.12 Alıştırmalar

    Alıştırma 1 Aşağıda verilen linkte bulunan e-spor veri setini read.csv() fonksiyonu yardımı ile R’a aktarınız ve nesnenin adını EF_team_stats olarak belirleyiniz.
  • Link: https://raw.githubusercontent.com/gungorMetehan/EFData/main/EF_team_stats.csv
  • Ardından filter() fonksiyonu yardımıyla 2023 yılındaki (year), maps_played değişkeninin 10’dan büyük olduğu durumları filtreleyerek yeni bir veri seti üretiniz.

    Yanıt İçin Tıklayınız
    EF_team_stats <- read.csv("https://raw.githubusercontent.com/gungorMetehan/EFData/main/EF_team_stats.csv")
    EF_team_stats |>
      filter(maps_played > 10 & year == 2023)
    ##   year  match      map maps_played wins draws losses total_kills total_deaths
    ## 1 2023    LAN Overpass          12    8     0      4        1022          988
    ## 2 2023    LAN  Vertigo          21   15     0      6        1840         1762
    ## 3 2023    LAN   Anubis          15    8     0      7        1280         1276
    ## 4 2023 Online  Inferno          18   13     0      5        1702         1507
    ## 5 2023 Online   Mirage          18    9     0      9        1568         1522
    ## 6 2023 Online     Nuke          15   11     0      4        1389         1191
    ## 7 2023 Online Overpass          14    8     0      6        1165         1061
    ## 8 2023 Online  Vertigo          21   11     0     10        1839         1839
    ## 9 2023 Online   Anubis          29   17     0     12        2743         2596
    ##   rounds_played K.D_ratio
    ## 1           307      1.03
    ## 2           555      1.04
    ## 3           393         1
    ## 4           508      1.13
    ## 5           461      1.03
    ## 6           394      1.17
    ## 7           341       1.1
    ## 8           551         1
    ## 9           810      1.06
    ##                                                        players_played
    ## 1         MAJ3R - XANTARES - woxic - Calyx - Wicadia - imoRR - xfl0ud
    ## 2         MAJ3R - XANTARES - woxic - Calyx - Wicadia - imoRR - xfl0ud
    ## 3         MAJ3R - XANTARES - woxic - Calyx - Wicadia - imoRR - xfl0ud
    ## 4         MAJ3R - XANTARES - woxic - Calyx - Wicadia - imoRR - xfl0ud
    ## 5         MAJ3R - XANTARES - woxic - Calyx - Wicadia - imoRR - xfl0ud
    ## 6         MAJ3R - XANTARES - woxic - Calyx - Wicadia - imoRR - xfl0ud
    ## 7         MAJ3R - XANTARES - woxic - Calyx - Wicadia - imoRR - xfl0ud
    ## 8 MAJ3R - XANTARES - woxic - Calyx - Wicadia - imoRR - xfl0ud - Fabre
    ## 9 MAJ3R - XANTARES - woxic - Calyx - Wicadia - imoRR - xfl0ud - Fabre

    Alıştırma 2 Alıştırma 1’de içe aktarılan EF_team_stats nesnesinde (veri setinde) bulunan verileri rounds_played değişkenine göre büyükten küçüğe sıralayınız (Bunun için arrange() fonksiyonundan yararlanınız). Sonrasında ilk 5 satırı head() fonksiyonu yardımıyla yazdırınız.

    Yanıt İçin Tıklayınız
    EF_team_stats |>
      arrange(desc(rounds_played)) |>
      head(5)
    ##   year  match     map maps_played wins draws losses total_kills total_deaths
    ## 1 2022 Online    Nuke          37   25     0     12        3479         3191
    ## 2 2022 Online Inferno          35   23     0     12        3126         2868
    ## 3 2022 Online Vertigo          33   16     0     17        3178         2967
    ## 4 2021 Online Inferno          32   17     0     15        2652         2562
    ## 5 2023 Online  Anubis          29   17     0     12        2743         2596
    ##   rounds_played K.D_ratio
    ## 1           996      1.09
    ## 2           924      1.09
    ## 3           913      1.07
    ## 4           818      1.04
    ## 5           810      1.06
    ##                                                                    players_played
    ## 1         MAJ3R - XANTARES - Calyx - imoRR - xfl0ud - mini - EMSTAR - paz - woxic
    ## 2         MAJ3R - XANTARES - Calyx - imoRR - xfl0ud - mini - EMSTAR - paz - woxic
    ## 3 MAJ3R - XANTARES - Calyx - imoRR - xfl0ud - duggy - mini - EMSTAR - paz - woxic
    ## 4                               XANTARES - woxic - Calyx - imoRR - xfl0ud - ISSAA
    ## 5             MAJ3R - XANTARES - woxic - Calyx - Wicadia - imoRR - xfl0ud - Fabre

    Alıştırma 3 Alıştırma 1’de içe aktarılan EF_team_stats veri setinde farklı haritada (map) maç oynandığını distinct() fonksiyonu yardımıyla bulunuz.

    Yanıt İçin Tıklayınız
    EF_team_stats |>
      distinct(map)
    ##            map
    ## 1      Ancient
    ## 2        Dust2
    ## 3      Inferno
    ## 4       Mirage
    ## 5         Nuke
    ## 6     Overpass
    ## 7      Vertigo
    ## 8       Anubis
    ## 9        Cache
    ## 10 Cobblestone
    ## 11      Season
    ## 12       Train
    ## 13      Tuscan

    Alıştırma 4 Alıştırma 1’de içe aktarılan EF_team_stats veri setindeki total_kills değerlerinin total_deaths değerlerinin bölümünden yeni bir değişken oluşturunuz, bu değişkene ratio ismini veriniz (Bunun için mutate fonksiyonundan yararlanınız). Sonrasında ilk 5 satırı head() fonksiyonu yardımıyla yazdırınız.

    Yanıt İçin Tıklayınız
    EF_team_stats |>
      mutate(ratio = total_kills / total_deaths) |>
      head(5)
    ##   year  match     map maps_played wins draws losses total_kills total_deaths
    ## 1 2021 Majors Ancient           0    0     0      0           0            0
    ## 2 2021 Majors   Dust2           0    0     0      0           0            0
    ## 3 2021 Majors Inferno           0    0     0      0           0            0
    ## 4 2021 Majors  Mirage           0    0     0      0           0            0
    ## 5 2021 Majors    Nuke           0    0     0      0           0            0
    ##   rounds_played K.D_ratio players_played ratio
    ## 1             0         -              -   NaN
    ## 2             0         -              -   NaN
    ## 3             0         -              -   NaN
    ## 4             0         -              -   NaN
    ## 5             0         -              -   NaN

    Alıştırma 5 Alıştırma 1’de içe aktarılan EF_team_stats veri setindeki year, wins, draws ve losses değişkenlerinden oluşan bir alt veri seti oluşturunuz (Bunun için select() fonksiyonundan yararlanınız). Sonrasında ilk 10 satırı head() fonksiyonu yardımıyla yazdırınız.

    Yanıt İçin Tıklayınız
    EF_team_stats |>
      select(year, wins, draws, losses) |>
      head(10)
    ##    year wins draws losses
    ## 1  2021    0     0      0
    ## 2  2021    0     0      0
    ## 3  2021    0     0      0
    ## 4  2021    0     0      0
    ## 5  2021    0     0      0
    ## 6  2021    0     0      0
    ## 7  2021    0     0      0
    ## 8  2021    0     0      0
    ## 9  2021    0     0      0
    ## 10 2021    0     0      0

    Alıştırma 6 Alıştırma 1’de içe aktarılan EF_team_stats veri setindeki map değişkeninin adını harita olarak değiştiriniz. Sonrasında ilk 12 satırı head() fonksiyonu yardımıyla yazdırınız.

    Yanıt İçin Tıklayınız
    EF_team_stats |>
      rename(harita = map) |>
      head(12)
    ##    year  match      harita maps_played wins draws losses total_kills
    ## 1  2021 Majors     Ancient           0    0     0      0           0
    ## 2  2021 Majors       Dust2           0    0     0      0           0
    ## 3  2021 Majors     Inferno           0    0     0      0           0
    ## 4  2021 Majors      Mirage           0    0     0      0           0
    ## 5  2021 Majors        Nuke           0    0     0      0           0
    ## 6  2021 Majors    Overpass           0    0     0      0           0
    ## 7  2021 Majors     Vertigo           0    0     0      0           0
    ## 8  2021 Majors      Anubis           0    0     0      0           0
    ## 9  2021 Majors       Cache           0    0     0      0           0
    ## 10 2021 Majors Cobblestone           0    0     0      0           0
    ## 11 2021 Majors      Season           0    0     0      0           0
    ## 12 2021 Majors       Train           0    0     0      0           0
    ##    total_deaths rounds_played K.D_ratio players_played
    ## 1             0             0         -              -
    ## 2             0             0         -              -
    ## 3             0             0         -              -
    ## 4             0             0         -              -
    ## 5             0             0         -              -
    ## 6             0             0         -              -
    ## 7             0             0         -              -
    ## 8             0             0         -              -
    ## 9             0             0         -              -
    ## 10            0             0         -              -
    ## 11            0             0         -              -
    ## 12            0             0         -              -

    Alıştırma 7 Alıştırma 1’de içe aktarılan EF_team_stats veri setindeki verileri match değişkenine göre gruplandırınız.

    Yanıt İçin Tıklayınız
    EF_team_stats |>
      group_by(match)
    ## # A tibble: 156 × 12
    ## # Groups:   match [4]
    ##     year match  map      maps_played  wins draws losses total_kills total_deaths
    ##    <int> <chr>  <chr>          <int> <int> <int>  <int>       <int>        <int>
    ##  1  2021 Majors Ancient            0     0     0      0           0            0
    ##  2  2021 Majors Dust2              0     0     0      0           0            0
    ##  3  2021 Majors Inferno            0     0     0      0           0            0
    ##  4  2021 Majors Mirage             0     0     0      0           0            0
    ##  5  2021 Majors Nuke               0     0     0      0           0            0
    ##  6  2021 Majors Overpass           0     0     0      0           0            0
    ##  7  2021 Majors Vertigo            0     0     0      0           0            0
    ##  8  2021 Majors Anubis             0     0     0      0           0            0
    ##  9  2021 Majors Cache              0     0     0      0           0            0
    ## 10  2021 Majors Cobbles…           0     0     0      0           0            0
    ## # ℹ 146 more rows
    ## # ℹ 3 more variables: rounds_played <int>, K.D_ratio <chr>,
    ## #   players_played <chr>

    Alıştırma 8 Alıştırma 1’de içe aktarılan EF_team_stats veri setindeki verileri match değişkenine göre gruplandırınız. Ardından her bir match kategorisindeki maps_played değişkeninin değerlerinin toplamını bulunuz. Bu değişkene toplam ismini veriniz.

    Yanıt İçin Tıklayınız
    EF_team_stats |>
      group_by(match) |> 
      summarize(toplam = sum(maps_played))
    ## # A tibble: 4 × 2
    ##   match      toplam
    ##   <chr>       <int>
    ## 1 Big Events     39
    ## 2 LAN           116
    ## 3 Majors          5
    ## 4 Online        435
    Alıştırma 9 Alıştırma 1’de içe aktarılan EF_team_stats veri setinin
  • ilk 3 satırını
  • son 3 satırını
  • rounds_played değişkeninin en düşük 3 değerinin bulunduğu satırları (çok sayıda değer 0 olduğu için üçten fazla satır elde edilecektir.)
  • rounds_played değişkeninin en yüksek 3 değerinin bulunduğu satırları
  • slice_*() fonksiyonlarından yararlanarak yazdırınız.

    Yanıt İçin Tıklayınız
    # ilk 3 satır
    EF_team_stats |>
      slice_head(n = 3)
    ##   year  match     map maps_played wins draws losses total_kills total_deaths
    ## 1 2021 Majors Ancient           0    0     0      0           0            0
    ## 2 2021 Majors   Dust2           0    0     0      0           0            0
    ## 3 2021 Majors Inferno           0    0     0      0           0            0
    ##   rounds_played K.D_ratio players_played
    ## 1             0         -              -
    ## 2             0         -              -
    ## 3             0         -              -
    # son 3 satır
    EF_team_stats |>
      slice_tail(n = 3)
    ##   year  match    map maps_played wins draws losses total_kills total_deaths
    ## 1 2023 Online Season           0    0     0      0           0            0
    ## 2 2023 Online  Train           0    0     0      0           0            0
    ## 3 2023 Online Tuscan           0    0     0      0           0            0
    ##   rounds_played K.D_ratio players_played
    ## 1             0         -              -
    ## 2             0         -              -
    ## 3             0         -              -
    # rounds_played değişkeninin en düşük değer aldığı 3 satır (ancak üçten fazla satır elde edilecektir)
    EF_team_stats |>
      slice_min(rounds_played, n = 3)
    ##     year      match         map maps_played wins draws losses total_kills
    ## 1   2021     Majors     Ancient           0    0     0      0           0
    ## 2   2021     Majors       Dust2           0    0     0      0           0
    ## 3   2021     Majors     Inferno           0    0     0      0           0
    ## 4   2021     Majors      Mirage           0    0     0      0           0
    ## 5   2021     Majors        Nuke           0    0     0      0           0
    ## 6   2021     Majors    Overpass           0    0     0      0           0
    ## 7   2021     Majors     Vertigo           0    0     0      0           0
    ## 8   2021     Majors      Anubis           0    0     0      0           0
    ## 9   2021     Majors       Cache           0    0     0      0           0
    ## 10  2021     Majors Cobblestone           0    0     0      0           0
    ## 11  2021     Majors      Season           0    0     0      0           0
    ## 12  2021     Majors       Train           0    0     0      0           0
    ## 13  2021     Majors      Tuscan           0    0     0      0           0
    ## 14  2021 Big Events     Ancient           0    0     0      0           0
    ## 15  2021 Big Events       Dust2           0    0     0      0           0
    ## 16  2021 Big Events     Inferno           0    0     0      0           0
    ## 17  2021 Big Events      Mirage           0    0     0      0           0
    ## 18  2021 Big Events        Nuke           0    0     0      0           0
    ## 19  2021 Big Events    Overpass           0    0     0      0           0
    ## 20  2021 Big Events     Vertigo           0    0     0      0           0
    ## 21  2021 Big Events      Anubis           0    0     0      0           0
    ## 22  2021 Big Events       Cache           0    0     0      0           0
    ## 23  2021 Big Events Cobblestone           0    0     0      0           0
    ## 24  2021 Big Events      Season           0    0     0      0           0
    ## 25  2021 Big Events       Train           0    0     0      0           0
    ## 26  2021 Big Events      Tuscan           0    0     0      0           0
    ## 27  2021        LAN     Ancient           0    0     0      0           0
    ## 28  2021        LAN       Dust2           0    0     0      0           0
    ## 29  2021        LAN     Inferno           0    0     0      0           0
    ## 30  2021        LAN      Mirage           0    0     0      0           0
    ## 31  2021        LAN        Nuke           0    0     0      0           0
    ## 32  2021        LAN    Overpass           0    0     0      0           0
    ## 33  2021        LAN     Vertigo           0    0     0      0           0
    ## 34  2021        LAN      Anubis           0    0     0      0           0
    ## 35  2021        LAN       Cache           0    0     0      0           0
    ## 36  2021        LAN Cobblestone           0    0     0      0           0
    ## 37  2021        LAN      Season           0    0     0      0           0
    ## 38  2021        LAN       Train           0    0     0      0           0
    ## 39  2021        LAN      Tuscan           0    0     0      0           0
    ## 40  2021     Online     Ancient           0    0     0      0           0
    ## 41  2021     Online      Anubis           0    0     0      0           0
    ## 42  2021     Online       Cache           0    0     0      0           0
    ## 43  2021     Online Cobblestone           0    0     0      0           0
    ## 44  2021     Online      Season           0    0     0      0           0
    ## 45  2021     Online       Train           0    0     0      0           0
    ## 46  2021     Online      Tuscan           0    0     0      0           0
    ## 47  2022     Majors     Ancient           0    0     0      0           0
    ## 48  2022     Majors     Inferno           0    0     0      0           0
    ## 49  2022     Majors      Mirage           0    0     0      0           0
    ## 50  2022     Majors    Overpass           0    0     0      0           0
    ## 51  2022     Majors      Anubis           0    0     0      0           0
    ## 52  2022     Majors       Cache           0    0     0      0           0
    ## 53  2022     Majors Cobblestone           0    0     0      0           0
    ## 54  2022     Majors      Season           0    0     0      0           0
    ## 55  2022     Majors       Train           0    0     0      0           0
    ## 56  2022     Majors      Tuscan           0    0     0      0           0
    ## 57  2022 Big Events     Ancient           0    0     0      0           0
    ## 58  2022 Big Events      Mirage           0    0     0      0           0
    ## 59  2022 Big Events      Anubis           0    0     0      0           0
    ## 60  2022 Big Events       Cache           0    0     0      0           0
    ## 61  2022 Big Events Cobblestone           0    0     0      0           0
    ## 62  2022 Big Events      Season           0    0     0      0           0
    ## 63  2022 Big Events       Train           0    0     0      0           0
    ## 64  2022 Big Events      Tuscan           0    0     0      0           0
    ## 65  2022        LAN     Ancient           0    0     0      0           0
    ## 66  2022        LAN      Anubis           0    0     0      0           0
    ## 67  2022        LAN       Cache           0    0     0      0           0
    ## 68  2022        LAN Cobblestone           0    0     0      0           0
    ## 69  2022        LAN      Season           0    0     0      0           0
    ## 70  2022        LAN       Train           0    0     0      0           0
    ## 71  2022        LAN      Tuscan           0    0     0      0           0
    ## 72  2022     Online      Anubis           0    0     0      0           0
    ## 73  2022     Online       Cache           0    0     0      0           0
    ## 74  2022     Online Cobblestone           0    0     0      0           0
    ## 75  2022     Online      Season           0    0     0      0           0
    ## 76  2022     Online       Train           0    0     0      0           0
    ## 77  2022     Online      Tuscan           0    0     0      0           0
    ## 78  2023     Majors     Ancient           0    0     0      0           0
    ## 79  2023     Majors       Dust2           0    0     0      0           0
    ## 80  2023     Majors     Inferno           0    0     0      0           0
    ## 81  2023     Majors      Mirage           0    0     0      0           0
    ## 82  2023     Majors        Nuke           0    0     0      0           0
    ## 83  2023     Majors    Overpass           0    0     0      0           0
    ## 84  2023     Majors     Vertigo           0    0     0      0           0
    ## 85  2023     Majors      Anubis           0    0     0      0           0
    ## 86  2023     Majors       Cache           0    0     0      0           0
    ## 87  2023     Majors Cobblestone           0    0     0      0           0
    ## 88  2023     Majors      Season           0    0     0      0           0
    ## 89  2023     Majors       Train           0    0     0      0           0
    ## 90  2023     Majors      Tuscan           0    0     0      0           0
    ## 91  2023 Big Events     Ancient           0    0     0      0           0
    ## 92  2023 Big Events       Dust2           0    0     0      0           0
    ## 93  2023 Big Events       Cache           0    0     0      0           0
    ## 94  2023 Big Events Cobblestone           0    0     0      0           0
    ## 95  2023 Big Events      Season           0    0     0      0           0
    ## 96  2023 Big Events       Train           0    0     0      0           0
    ## 97  2023 Big Events      Tuscan           0    0     0      0           0
    ## 98  2023        LAN     Ancient           0    0     0      0           0
    ## 99  2023        LAN       Dust2           0    0     0      0           0
    ## 100 2023        LAN       Cache           0    0     0      0           0
    ## 101 2023        LAN Cobblestone           0    0     0      0           0
    ## 102 2023        LAN      Season           0    0     0      0           0
    ## 103 2023        LAN       Train           0    0     0      0           0
    ## 104 2023        LAN      Tuscan           0    0     0      0           0
    ## 105 2023     Online       Dust2           0    0     0      0           0
    ## 106 2023     Online       Cache           0    0     0      0           0
    ## 107 2023     Online Cobblestone           0    0     0      0           0
    ## 108 2023     Online      Season           0    0     0      0           0
    ## 109 2023     Online       Train           0    0     0      0           0
    ## 110 2023     Online      Tuscan           0    0     0      0           0
    ##     total_deaths rounds_played K.D_ratio players_played
    ## 1              0             0         -              -
    ## 2              0             0         -              -
    ## 3              0             0         -              -
    ## 4              0             0         -              -
    ## 5              0             0         -              -
    ## 6              0             0         -              -
    ## 7              0             0         -              -
    ## 8              0             0         -              -
    ## 9              0             0         -              -
    ## 10             0             0         -              -
    ## 11             0             0         -              -
    ## 12             0             0         -              -
    ## 13             0             0         -              -
    ## 14             0             0         -              -
    ## 15             0             0         -              -
    ## 16             0             0         -              -
    ## 17             0             0         -              -
    ## 18             0             0         -              -
    ## 19             0             0         -              -
    ## 20             0             0         -              -
    ## 21             0             0         -              -
    ## 22             0             0         -              -
    ## 23             0             0         -              -
    ## 24             0             0         -              -
    ## 25             0             0         -              -
    ## 26             0             0         -              -
    ## 27             0             0         -              -
    ## 28             0             0         -              -
    ## 29             0             0         -              -
    ## 30             0             0         -              -
    ## 31             0             0         -              -
    ## 32             0             0         -              -
    ## 33             0             0         -              -
    ## 34             0             0         -              -
    ## 35             0             0         -              -
    ## 36             0             0         -              -
    ## 37             0             0         -              -
    ## 38             0             0         -              -
    ## 39             0             0         -              -
    ## 40             0             0         -              -
    ## 41             0             0         -              -
    ## 42             0             0         -              -
    ## 43             0             0         -              -
    ## 44             0             0         -              -
    ## 45             0             0         -              -
    ## 46             0             0         -              -
    ## 47             0             0         -              -
    ## 48             0             0         -              -
    ## 49             0             0         -              -
    ## 50             0             0         -              -
    ## 51             0             0         -              -
    ## 52             0             0         -              -
    ## 53             0             0         -              -
    ## 54             0             0         -              -
    ## 55             0             0         -              -
    ## 56             0             0         -              -
    ## 57             0             0         -              -
    ## 58             0             0         -              -
    ## 59             0             0         -              -
    ## 60             0             0         -              -
    ## 61             0             0         -              -
    ## 62             0             0         -              -
    ## 63             0             0         -              -
    ## 64             0             0         -              -
    ## 65             0             0         -              -
    ## 66             0             0         -              -
    ## 67             0             0         -              -
    ## 68             0             0         -              -
    ## 69             0             0         -              -
    ## 70             0             0         -              -
    ## 71             0             0         -              -
    ## 72             0             0         -              -
    ## 73             0             0         -              -
    ## 74             0             0         -              -
    ## 75             0             0         -              -
    ## 76             0             0         -              -
    ## 77             0             0         -              -
    ## 78             0             0         -              -
    ## 79             0             0         -              -
    ## 80             0             0         -              -
    ## 81             0             0         -              -
    ## 82             0             0         -              -
    ## 83             0             0         -              -
    ## 84             0             0         -              -
    ## 85             0             0         -              -
    ## 86             0             0         -              -
    ## 87             0             0         -              -
    ## 88             0             0         -              -
    ## 89             0             0         -              -
    ## 90             0             0         -              -
    ## 91             0             0         -              -
    ## 92             0             0         -              -
    ## 93             0             0         -              -
    ## 94             0             0         -              -
    ## 95             0             0         -              -
    ## 96             0             0         -              -
    ## 97             0             0         -              -
    ## 98             0             0         -              -
    ## 99             0             0         -              -
    ## 100            0             0         -              -
    ## 101            0             0         -              -
    ## 102            0             0         -              -
    ## 103            0             0         -              -
    ## 104            0             0         -              -
    ## 105            0             0         -              -
    ## 106            0             0         -              -
    ## 107            0             0         -              -
    ## 108            0             0         -              -
    ## 109            0             0         -              -
    ## 110            0             0         -              -
    # rounds_played değişkeninin en yüksek değer aldığı 3 satır
    EF_team_stats |>
      slice_max(rounds_played, n = 3)
    ##   year  match     map maps_played wins draws losses total_kills total_deaths
    ## 1 2022 Online    Nuke          37   25     0     12        3479         3191
    ## 2 2022 Online Inferno          35   23     0     12        3126         2868
    ## 3 2022 Online Vertigo          33   16     0     17        3178         2967
    ##   rounds_played K.D_ratio
    ## 1           996      1.09
    ## 2           924      1.09
    ## 3           913      1.07
    ##                                                                    players_played
    ## 1         MAJ3R - XANTARES - Calyx - imoRR - xfl0ud - mini - EMSTAR - paz - woxic
    ## 2         MAJ3R - XANTARES - Calyx - imoRR - xfl0ud - mini - EMSTAR - paz - woxic
    ## 3 MAJ3R - XANTARES - Calyx - imoRR - xfl0ud - duggy - mini - EMSTAR - paz - woxic