1 R Markdown’a Giriş

Bu sayfada R Markdown kullanarak nasıl belge, HTML veya rapor oluşturacağımızı öğreneceğiz.

R Markdown aracılığıyla R kodları kullanarak HTML, PDF ve MS Office Word belgeleri oluşturabiliriz. R Markdown ayrıca sonuçların tekrarlanabilirliğini sağlamanın bir yoludur.

Tekrarlanabilir sonuçlar

Sıkça karşılaşılan bir senaryo düşünelim: Analizlerinizi yaptınız ve bulguları göstermek için bir sunum hazırladınız. Sunumu paydaşlara gönderdiniz ve bazı değişiklik talepleri aldınız. Bazen, rapor veya sunumlarınızı hazırlarken kullandığınız verilere ilişkin attığınız her adımı hatırlayamayabilirsiniz. Bu durumda çalışmanızı düzenlemek için çok uzun sürelere ve emeğe ihtiyaç duyarsınız.

Çıktılarınızı ve raporu R Markdown ile kodlar oluşturarak hazırlarsanız, siz veya başka biri sizin sonuçlarınızı her zaman yeniden üretebilir ve kısa sürede düzenleyebilir.

1.1 R Markdown öğeleri

Bir R Markdown belgesi üç bileşenden oluşur: kod, metin ve dosyanın meta verileri.

1.2 R Markdown dosyası

Meta verileri içeren YAML başlığı dosyanın en üstünde görünür, ardından metin ve kod parçaları halinde kod dahil olmak üzere raporu oluşturan içerikler gelir. YAML, yapılandırma dosyaları için yaygın olarak kullanılan hiyerarşik veri yapılarına yönelik bir sözdizimidir.

1.3 Örme/Knit

Bir dosyayı bitirdiğimizde ve raporu görmeye hazır olduğumuzda, onu örmemiz gerekir. Bir dosyayı örmek (knit), R markdown dosyasından bir çıktı dosyası oluşturma yöntemimizdir. Bir dosya örüldüğünde, R Markdown dosyada bulunan R kodu parçalarını çalıştırır ve bunları belgedeki metinle birleştirerek bir HTML/PDF/Word dosyası haline getirir. Örneğin, bu R Markdown dosyası örüldüğünde, bir HTML çıktısı oluşacaktır. Bölümün ilerleyen kısımlarında çıktı türleri hakkında daha fazla bilgi edineceğiz.

Örnek Veri-1: “Yıllık Yatırım Özeti”

Bu çalışmamızda, Dünya Bankası Uluslararası Finans Kurumu-IFC’den alınan gerçek dünya veri kümelerini kullanarak bir rapor oluşturacağız. İlk veri kümesi olan investment_annual_summary, 2012’den 2018’e kadar ekonomik bölgelere yatırım amaçlı sağlanan bütçenin bir özetini sunmaktadır.

library(readr)

investment_annual_summary <- read_csv("https://assets.datacamp.com/production/repositories/5756/datasets/d0251f26117bbcf0ea96ac276555b9003f4f7372/investment_annual_summary.csv")

Örnek Veri-2: “Yatırım hizmetleri projeleri”

İkinci veri seti olan investment_services_projects, 2012 ila 2018 mali yılları arasındaki her bir yatırım projesi hakkında daha spesifik bilgiler sunmaktadır. Listelenen bilgiler arasında proje adı, şirket adı, sektör, proje durumu ve yatırım tutarları yer almaktadır.

Not: Mali yıl bir önceki yılın 1 Temmuz’unda başlar ve ilgili yılın 30 Haziran’ında sona erer.

investment_services_projects <- read_csv("https://assets.datacamp.com/production/repositories/5756/datasets/78b002735b6f620df7f2767e63b76aaca317bf8d/investment_services_projects.csv")

1.4 Kod yığını/Code Chunk

Bir kod yığını (code chunk) raporda çıktı oluşturacak ya da kodun kendisini raporun bir parçası olarak görüntüleyecek bölümdür. Kod yığınları, metni koddan ayıran öğelerdir.

Kod yığını eklemek için ardışık ü. “back tick” sembolünden yani ``` oluşan bir set ile başlanır ve bu ilk işaret kümesi kod yığınının başlangıcını belirtir. Ayrıca r kodu eklediğimizi belirtmek için “r” harfini içeren küme parantezleri tarafından takip edilir. Küme parantezleri içinde bir dizi başka kod seçeneği de belirtebiliriz. Bunun ayrıntılarını ilerleyen bölümlerde göreceğiz. Kod yığınını kapatmak için yine ardışık üç “back tick” sembolü kullanılır.

r chunk yapısı
r chunk yapısı

2 Belge Biçimlendirme

R Markdown her bir öğeyi içeren hazır bir şablon ile başlar. Eklemek istediğimiz veri, analiz sonuçları ve görsel vb. öğeler kod yığınları aracılığıyla belgemize işlenir.

2.1 Başlık düzeyi

Rapora başlıklar eklemek, her bölümün açıkça etiketlenmesine yardımcı olacaktır. Başlıkları bir diyez (hash) sembolü ve başlık metninden önce tek bir boşluk kullanarak ekleriz. Ne kadar çok diyez kullanırsak, başlık o kadar alt düzey olacaktır.

# birinci düzey başlık

## ikinci düzey başlık

### üçüncü düzey başlık…

Diyez işareti olmadan yazılanlar metin cümleleri olarak algılanır.

Eğer bir kod yığınına dair açıklama metni eklemek istiyorsak, kod içinde açıklama metinden önce diyez işareti ekleriz.

## # A tibble: 42 × 3
##    fiscal_year region                          dollars_in_millions
##          <dbl> <chr>                                         <dbl>
##  1        2012 East Asia and the Pacific                      2548
##  2        2012 Europe and Central Asia                        2915
##  3        2012 Latin America and the Caribbean                3680
##  4        2012 Middle East and North Africa                   2210
##  5        2012 South Asia                                     1312
##  6        2012 Sub-Saharan Africa                             2733
##  7        2013 East Asia and the Pacific                      2873
##  8        2013 Europe and Central Asia                        3261
##  9        2013 Latin America and the Caribbean                4822
## 10        2013 Middle East and North Africa                   2038
## # ℹ 32 more rows

2.2 Metin biçimlendirme

Bir markdown dosyasındaki metni biçimlendirmek için metni kalın, italik veya üstü çizili yapmak da dahil olmak üzere birçok seçenek vardır. Metni kalınlaştırmak için ikişer yıldız veya alt çizgi, italik yapmak için tek bir yıldız veya alt çizgi ve üstünü çizmek için ikişer tilda sembolü çevreleriz.

italik veya ITALIK

kalın veya KALIN

Üstü Çizili

Alt çizgi

km2 Xi

2.2.1 Satır içi kod

Koddaki nesne adlarına atıfta bulunduğumuzu netleştirmek için metne satır içi kod ekleyebiliriz. Satır içi kodunu, veri ismini “back tick” ile çevreleyerek ekleriz.

Bu cümlede investment_annual_summary verisini satır içi kod olarak yazabilmek için yukarıda gösterildiği gibi “back tick”ler kullanılmıştır. Bu sayede okuyucular bunun bir r nesnesi olduğunu anlayabilir.

2.3 Rapora bağlantı ve görsel ekleme

Rapora web sitesi bağlantıları da ekleyebiliriz. Burada, bağlantı metnini köşeli parantezler içine ve ardından bağlantıyı parantezler içine yerleştirerek veri kaynağına referans veririz. Köşeli parantezler ve parantezler arasında boşluk olmadığına dikkat edelim.

Örnek: YÖK ana sayfasına buradan ulaşabilirsiniz

Görseller de bağlantılara benzer şekilde rapora eklenir. Ancak bu defa köşeli parantezden önce ünlem işareti vardır. Parantez içinde referans verdiğimiz görseller, bilgisayardaki yerel dosyalardan ya da web sayfalarından eklenebilir.

Örneğin yukarıda verilen görsel, aşağıda verilen bağlantı aracılığıyla rapora eklenmiştir.

NOT: Burada verilen metin düzenleme işlemleri ve daha fazlası “Visual” bölümünde yer alan “Format” ve “Insert” sekmeleri yardımı ile de yapılabilir. Bu kısım okuyucuya bırakılmıştır.

3 YAML Başlığı-I

YAML başlığı, belge hakkındaki bilgilere karşılık gelen anahtar değer çiftleri olarak dosyanın meta verilerini içerir. Markdown dosyasının en üstünde görünür ve üç tire işaretinden oluşan iki setle başlar ve biter. Yeni bir markdown belgesi oluşturduğumuzda, varsayılan olarak başlık, yazar tarih ve çıktı biçimini içerir.

YAML başlığı, işlemek için özel biçimlendirme gerektirir ve her alandan sonra iki nokta ile gerekli yerlerde tırnak işeretleri veya “back tick” kullanılır. Ayrıca fazladan boşluk eklemekten kaçınmak önemlidir. YAML başlığındaki alanlardan herhangi birini değiştirdikten sonra, değişikliklerin nihai rapora yansıtıldığını görmek için belgeyi tekrar öreriz.

3.1 Çıktı türleri

Markdown dosyasının çıktı türü de YAML başlığında belirtilir. YAML başlığının çıktı bölümünü html_document, pdf_document ya da word_document olarak değiştirerek bu türler arasında manuel olarak geçiş yapabiliriz. Bir diğer yöntem ise knit sekmesinden çıktı türünün seçilmesidir.

3.2 Tarih ekleme ve düzenleme

YAML başlığına ekleyebileceğimiz bir diğer bilgi de tarihtir. Tarihi yukarıda verildiği gibi bir manuel olarak girebiliriz.

Ancak, tarihi manuel olarak girmek herzaman kullanışlı değildir. Bunun yerine, tarihin otomatik olarak eklenmesini isteyebiliriz. Bunu aşağıda gösterildiği gibi Sys.Date() fonksiyonu ile yapabiliriz. Belgeyi ördüğümüzde, bugünün tarihinin yıl-ay-gün biçiminde rapora eklendiğini görürüz.

Raporda tarih formatı aşağıdaki şekilde biçimlendirilebilir. Burada önemli olan husus format() fonksiyonu ile istediğimiz tarih formatını %d %B ve %Y öğeleri ile belirlemekteyiz.

Tarih biçimini değiştirmek için bir dizi seçenek vardır. Bütün seçeneklerden önce % sembolü gelmek üzere; metinsel günler için A veya a harfleri, metinsel ay için B veya b harfleri, sayısal gün için d harfi, sayısal ay için m harfi ve yıl için Y veya y harfleri kullanılır. Aynı amaçla kullanılan harfler arasındaki farkların incelenmesi okuyucuya bırakılmıştır.

Tarih formatı seçenekleri
Sembol Metinsel Sembol Sayısal
%A veya %a Gün %d Gün
%B veya %b Ay %m Ay
%Y veya %y Yıl

Ayrıca tarihe dahil etmek istediğimiz virgülleri, kısa çizgileri veya ters eğik çizgileri istediğimiz yerlere ekleyebiliriz. Tarihin biçimini değiştirmenin ötesinde, tarihin yanında görünen metni de dahil etmek isteyebiliriz. Bunu yapmak için, metni koddan önce dizenin içine ekleriz.

Örneğin aşağıda dosyanın en son hangi tarihte düzenlendiğini göstermek istiyoruz. Bunun için tarih alanındaki koddan önce “Son düzenleme tarihi” ifadesi eklenmiştir.

Tarih formatları için ayrıntılı bilgiye buradan erişebilirsiniz.

4 Veri Analizi

Artık Markdown dosyası öğelerini bildiğimize göre, rapora ekleyeceğimiz veri analizleri kısmına geçebiliriz. Belirli bir ülkedeki projeler hakkındaki bilgileri görüntülemek için investment_services_projects verilerini filtreleyelim.

İlk olarak, “dplyr” paketini yüklüyoruz. Paketler genel olarak, Markdown dosyasındaki ilk kod yığınına yüklenir. Çünkü dosya örüldüğünde çalışan ilk kod yığını budur. Gerekli tüm paketleri dosyanın başında listelemek de dosyanın düzenli kalmasını ve raporun başka bir yerinde paketleri tekrar tekrar çağırmamızı sağlar.

Kod yığınınına, veri kümesi adını, “dplyr” paketine özgü “pipe” (%>%) işlecini ve ülke seçimi olarak Türkiye veri filtresini ekleyelim ve bunu turkey_investment_projects olarak adlandıralım.

turkey_investment_projects<-investment_services_projects %>% filter(country=="Turkey")

turkey_investment_projects
## # A tibble: 85 × 13
##    date_disclosed      country ifc_country_code sector              project_name
##    <dttm>              <chr>   <chr>            <chr>               <chr>       
##  1 2018-07-18 00:00:00 Turkey  TUR              Financial Institut… Abank SME   
##  2 2018-06-13 00:00:00 Turkey  TUR              Financial Institut… Garanti Ban…
##  3 2018-06-06 00:00:00 Turkey  TUR              Manufacturing       Asas Turkey 
##  4 2017-11-01 00:00:00 Turkey  TUR              Financial Institut… TSKB Sustai…
##  5 2017-09-27 00:00:00 Turkey  TUR              Financial Institut… DCM Is Gree…
##  6 2017-08-16 00:00:00 Turkey  TUR              Manufacturing       Tupras      
##  7 2017-08-09 00:00:00 Turkey  TUR              other               Antalya Mun…
##  8 2017-07-26 00:00:00 Turkey  TUR              Tourism, Retail, a… YMI WC      
##  9 2017-07-06 00:00:00 Turkey  TUR              Financial Institut… DCM Akbank …
## 10 2017-06-07 00:00:00 Turkey  TUR              Financial Institut… DCM Green M…
## # ℹ 75 more rows
## # ℹ 8 more variables: project_number <dbl>, company_name <chr>, status <chr>,
## #   ifc_investment_for_risk_management_million_usd <dbl>,
## #   ifc_investment_for_guarantee_million_usd <dbl>,
## #   ifc_investment_for_loan_million_usd <dbl>,
## #   ifc_investment_for_equity_million_usd <dbl>,
## #   total_ifc_investment_as_approved_by_board_million_usd <dbl>

Çıktıda 2012-2018 mali yılları arasında 85 proje olduğunu görebiliriz.

Başka bir kod yığını ekleyelim ve 2012 mali yılındaki projeler için filtre uygulayalım. Buna turkey_investment_projects_2012 adını verelim ve mevcut koda ekleme yaparak 1 Temmuz 2011’den 30 Haziran 2012’ye kadar olan projeleri filitreleyelim.

turkey_investment_projects_2012<-investment_services_projects %>% filter(country=="Turkey",   date_disclosed >= "2011-07-01", date_disclosed<="2012-06-30")

turkey_investment_projects_2012
## # A tibble: 8 × 13
##   date_disclosed      country ifc_country_code sector               project_name
##   <dttm>              <chr>   <chr>            <chr>                <chr>       
## 1 2012-06-29 00:00:00 Turkey  TUR              Financial Instituti… Finansbank …
## 2 2012-05-29 00:00:00 Turkey  TUR              Health and Education OzU         
## 3 2012-05-17 00:00:00 Turkey  TUR              Financial Instituti… Izmir Muni  
## 4 2012-05-10 00:00:00 Turkey  TUR              Agribusiness and Fo… KKagit      
## 5 2012-04-13 00:00:00 Turkey  TUR              Financial Instituti… Superfilm   
## 6 2012-04-09 00:00:00 Turkey  TUR              Health and Education MNT         
## 7 2012-03-05 00:00:00 Turkey  TUR              Tourism, Retail, an… Fibabanka W…
## 8 2012-02-03 00:00:00 Turkey  TUR              Infrastructure       Mediterra CP
## # ℹ 8 more variables: project_number <dbl>, company_name <chr>, status <chr>,
## #   ifc_investment_for_risk_management_million_usd <dbl>,
## #   ifc_investment_for_guarantee_million_usd <dbl>,
## #   ifc_investment_for_loan_million_usd <dbl>,
## #   ifc_investment_for_equity_million_usd <dbl>,
## #   total_ifc_investment_as_approved_by_board_million_usd <dbl>

2012 mali yılına ait 8 proje olduğunu görebiliriz.

Ayrıca rapor metninde yukarıda değinildiği gibi satıriçi kodlar aracılığıyla kod sonuçlarına referans verebiliriz. Bu şekilde, veri dosyası veya işlemler güncellenir ve ilgili nesnenin değeri değişirse, metin yeni nesne değerini yansıtacak şekilde otomatik olarak güncellenir.

2012 mali yılındaki projelerin toplam yatırım tutarını hesaplamak için turkey_investment_projects_2012’yi kullanalım. Kodumuza summarize() fonksiyonu ekleyip oluşturduğumuz yeni sütunun adını sum_total_investment yapalım ve “total_ifc_investment_as_approved_by_board_million_usd” sütununu sum() fonksiyonuna aktaralım.

turkey_investment_projects_2012_total<-turkey_investment_projects_2012 %>% summarise(sum_total_investment=sum(total_ifc_investment_as_approved_by_board_million_usd, na.rm=TRUE))

turkey_investment_projects_2012_total
## # A tibble: 1 × 1
##   sum_total_investment
##                  <dbl>
## 1                 351.

Kod çalıştırıldığında toplam yatırım tutarının 351 milyon dolar olduğunu görüyoruz. Söz konusu sonucu raporumuza aşağıdaki şekilde aktarabiliriz. Bu durumda verilerde güncelleme yapıldığında rapordaki çıktı da otomatik olarak değişecektir.

“Türkiye’de 2012 yılında yapılan toplam yatırım miktarı 351.03 milyon Dolar olup …”

Burada daha önce de değinildiği üzere ilgili nesneden önce “r” harfini eklemeyi unutmamalıyız. Aksi takdirde back tick işaretleri içinde nesne adı doğrudan yazdırılmış olur.

4.1 Kodları isimlendirme

Dosyayı örerken sorunlarla karşılaşışabiliriz veya kodla ilgili hatalar alabiliriz. Kod parçası eklemeye devam ettikçe hataları tespit etmek ve bunları kolayca düzenlemek daha zor hale gelecektir.

Bu sorunu çözmek için belgedeki her bir kod yığınını adlandırabiliriz, böylece kodun tanımlanması daha kolay olur. Her bir kod yığınını adlandırmak, rapor boyunca kodu etiketlemenin bir yoludur; bu da düzenlemek istediğimiz belirli bir bölümü aradığımızda bize yardımcı olacaktır.

Kod parçalarını adlandırırken, koda o bölümdeki kodun neyi işlediğine dair bir fikir veren bir ad vermek en iyisidir. Bu durumda, Türkiye’deki tüm projeleri ile 2012 mali yılındaki tüm projeleri tanımladığımız bölümler olduğunu açıklığa kavuşturmak için kod parçalarını turkey-investment-projects ve turkey-investment-projects-2012 olarak adlandıralım.

5 Görseller

Bu bölümde R Markdown raporlarında veri görselleştirmenin nasıl yapılabileceği işleyeceğiz.

Konsol veya Script kısmında yaptığımız gibi grafikler oluşturabiliriz. Kodu basitçe bir kod yığınına yerleştirdiğimizde ve dosya örüldüğünde grafikler oluşturulacaktır. Bunun için sıkça kullanılan “ggplot2” paketinden yararlanabiliriz. Tabiî ki R’da grafik çizimleri için birçok paket mevcuttur. Ancak biz bu belgede ggplot2 paketini kullanacağız. Öncelikle, daha önce dplyr’da yaptığımız gibi, belgedeki ilk kod yığınına ggplot2 paketini ekleyelim.

Farklı mali yıllardaki milyon dolar cinsinden yatırım miktarını görselleştirmek üzere bir çizgi grafiği oluşturabiliriz. Bunun için yıllık yatırım özetini veren investment_annual_summary verisini kullanalım.

ggplot() fonksiyonu grafik çizimleri için kullanışlıdır. Fonksiyona öncelikle veri kümesi adı girilir ve ardından grafiğin estetik ayarları için aes komutu kullanılır; burada eksenler, renk, çizgi türü vb. özellikler belirlenir.

ggplot(investment_annual_summary,
       aes(x=fiscal_year,
           y=dollars_in_millions,
           color= region))+
  geom_line()

x mali yıla, y yatırım yapılan milyon dolara ve renk bölgeye göre seçilmiş ve çizgi grafiği oluşturmak için geom_line() fonksiyonunu eklenmiştir. Böylece yatırım miktarının farklı bölgelerde zaman içinde nasıl değiştiğini görebiliriz.

İstersek bu grafiği bir nesneye atayabilir ve eklemeler yapmak için kullanabiliriz. Söz konusu grafiği daha sonra kullanmak için “grafik” nesnesine atayalım.

Etiketleri düzenleyebilir veya başlık ekleyebiliriz. geom_line() fonksiyonundan sonra bir artı işareti ve labs() fonksiyonunu ekleyerek başlık, x ve y eksenleri için etiketler ekleyebiliriz. Biz bu grafiği bir “grafik” nesnesine atadığımız için bu nesne üzerinde işlemlerimize devam edeceğiz.

grafik+ labs(title= "Yıllık Toplam Yatırım",
             x="mali yıl",
             y= "milyon dolar")

Dosyayı ördüğümüzde, eklenen etiketlerle birlikte grafiği görebilmekteyiz.

Farklı grafik türleri de oluşturabiliriz. İlk olarak 2012 ila 2018 mali yılları arasında Türkiye’de gerçekleşen tüm projeler için bir grafik oluşturabilir ve her bir projeyi ve her bir projeyle ilişkili toplam yatırım miktarını bir dağılım grafiği olarak görüntüleyebiliriz. Bunun için daha önce filitreleyerek oluşturduğumuz turkey_investment_projects verisini ve “geom_point()” fonksiyonunu kullanacağız.

ggplot(turkey_investment_projects, aes(x=date_disclosed, y=total_ifc_investment_as_approved_by_board_million_usd))+
  geom_point()+
  labs(x="Yıl",
       y= "Toplam Yatırım (Milyon $)",
       title= "Türkiye Yıllık Yatırım")
## Warning: Removed 3 rows containing missing values (`geom_point()`).

turkey_investment_projects veri setini incelediğimizde, projenin durumunu Onay Bekliyor, Beklemede, Aktif veya Tamamlandı olarak tanımlayan bir “status” sütunu içerdiğini görürüz. Her noktayı proje durumuna göre renklendirebiliriz. Bunun için aes() içinde daha önce de kullandığımız “color=” komutunu ekleyelim.

ggplot(turkey_investment_projects,
       aes(x=date_disclosed,
           y=total_ifc_investment_as_approved_by_board_million_usd,
           color=status))+
  geom_point()+
  labs(x="Yıl",
       y= "Toplam Yatırım (Milyon $)",
       title= "Türkiye Yıllık Yatırım")
## Warning: Removed 3 rows containing missing values (`geom_point()`).

Bu çizim daha fazla bilgi sağlıyor çünkü her bir projenin açıklandığı tarihi, ilgili yatırım tutarını ve durumunu görebiliyoruz.

Örgü dosyasının, hariç tutulan veriler hakkında bir uyarı mesajı içerdiğine dikkat edelim. turkey_investment_projects verilerine daha yakından bakarsak, grafiği oluşturmak için toplam yatırım miktarını kullandığımızdan ve 3 projeye ilişkin ilişkili yatırım tutarları bulunmadığından, veriler grafikten çıkarılmıştır. Bu, okuyuculara daha fazla bilgi sağlamak için rapor metnine dahil etmek isteyebileceğimiz bir husustur.

turkey_investment_projects$total_ifc_investment_as_approved_by_board_million_usd
##  [1]  80.00  75.00     NA  75.00 105.00 100.00  94.50  75.00 150.00     NA
## [11] 150.00  25.00  87.64  40.00   5.00  50.00 440.00  60.00  32.86  75.00
## [21] 100.00  56.99  47.00  16.67   8.00 215.00  65.49 100.00 105.68  90.00
## [31]  75.00 100.00  16.44  20.00  40.00  50.00  20.15  44.50  40.00 142.50
## [41]   3.00  60.00  25.00  70.00  24.95  88.02 170.00  45.66 125.00  64.00
## [51]  48.66  34.03  60.00  70.00  74.52  50.00  40.00  75.00  12.51  75.00
## [61]  14.63  40.00  10.27  25.00  50.00     NA  50.00  40.00  75.00  35.89
## [71]  69.02  75.00  35.00  25.00   6.00 125.00 125.00  75.00  42.50  58.53
## [81]  50.00  45.00  30.00  30.00  20.00

Örnek olması açısından turkey_investment_projects_2012 verisi için grafik oluşturarak inceleyebiliriz.

ggplot(turkey_investment_projects_2012,
       aes(x=date_disclosed,
           y=total_ifc_investment_as_approved_by_board_million_usd,
           color=status))+
  geom_point()+
  labs(x="Ay",
       y= "Toplam Yatırım (Milyon $)",
       title= "Türkiye 2012 Yılı Yatırımı")

Bu örnekte, İncelenen veriye ilişkin eksik veri bulunmadığı için herhangi bir uyarı mesajı alınmamıştır.

NOT: Farklı grafik türleri için ggplot2 paketini incelenebilir. Bu kısım okuyucuya bırakılmıştır.

5.1 Grafik Seçenekleri

Rapora grafikleri eklediğimize göre, şimdi her bir grafiğin nasıl değiştirileceğini ve rapor boyunca nasıl görüneceklerini inceleyelim.

5.1.1 Şekil Boyutları

Çoğu zaman şekil boyutlarını değiştirmek isteriz. Bunu yapmanın birkaç yolu vardır. Birincisi, son raporda şeklin genişliğini ve yüksekliğini inç cinsinden belirtmek için fig.width ve fig.height komutlarını kullanmaktır. Örneğin, şeklin 5 x 3 inç olmasını istiyorsak, küme parantezleri içindeki kod yığını adından sonra bir virgül koyarız ve fig.width=5 ve fig.height=3 ekleriz. Alternatif olarak, bu boyutları ayrı ayrı belirtmek yerine, parantez içinde fig.dim=c(5, 3) kullanabiliriz ve aynı sonucu bir bağımsız değişkenle elde ederiz.

Aşağıda verilen iki kod yığının sonucunda aynı boyutta grafikler elde edilir.

ggplot(investment_annual_summary, aes(x=fiscal_year, y=dollars_in_millions, color= region))+
  geom_line()+
  labs(title= "Yıllık Toplam Yatırım",
       x="mali yıl",
       y= "milyon dolar")

5.1.2 Çıktı boyutları

Ayrıca out.width ve out.height kullanarak şeklin boyutlarını değiştirebiliriz. Bu argümanlar, örgü belgesindeki görüntülerin çıktısının boyutlarını belirler ve yüzde olarak belirtilir. Örneğin, out.width=“50%”, şeklin örüldükten sonra raporun genişliğinin yüzde 50’sini kaplamasıyla sonuçlanacaktır. Yüzdeyi tırnak içine alıyoruz. Burada çift tırnak kullanıyoruz ancak tek tırnak da kullanılabilir. Tırnak içinde tırnak kullanıldığında, örneğin YAML başlığındaki tarih alanına biçimlendirme gibi, özellikle tek veya çift tırnak kullanmak önemlidir.

ggplot(investment_annual_summary, aes(x=fiscal_year, y=dollars_in_millions, color= region))+
  geom_line()+
  labs(title= "Yıllık Toplam Yatırım",
       x="mali yıl",
       y= "milyon dolar")

5.1.3 Hizalama

fig.align kullanarak rapordaki her şeklin hizalamasını değiştirebiliriz. Bunun için komut ile birlikte tırnak içinde listelenen sol-left , sağ-right veya orta-center kullanılır. Aşağıda, sağ hizalamayı kullandık ve bunun örgü belgeye nasıl yansıtıldığını görüyoruz.

ggplot(investment_annual_summary, aes(x=fiscal_year, y=dollars_in_millions, color= region))+
  geom_line()+
  labs(title= "Yıllık Toplam Yatırım",
       x="mali yıl",
       y= "milyon dolar")

5.1.4 Görseli isimlendirme

fig.cap kullanarak şekle bir başlık ekleyebiliriz. Burada, ilk grafiği Şekil 1.1 olarak etiketlemek ve grafiğin hangi mali yılları gösterdiğini belirtmek için bir başlık ekleyelim.

ggplot(investment_annual_summary, aes(x=fiscal_year, y=dollars_in_millions, color= region))+
  geom_line()+
  labs(title= "Yıllık Toplam Yatırım",
       x="mali yıl",
       y= "milyon dolar")
Şekil 1.1 Bölgelere göre 2012-2018 Yılları Yatırım Miktarı

Şekil 1.1 Bölgelere göre 2012-2018 Yılları Yatırım Miktarı

5.2 Yerel ve Global seçenekler

Her bir kod yığınındaki şekiller için seçenekleri ayarlarken, bazı kod yığını seçeneklerinin rapor boyunca tekrarlandığını fark edebiliriz. Bu durumda, bu seçenekleri yerel olarak ayarlamak yerine global olarak ayarlamayı düşünebiliriz. Seçenekleri yerel olarak belirlediğimizde, bunları her kod yığınına ekleriz ve yalnızca o yığında bulunan kodu etkilerler. Bunun yerine seçenekleri global olarak ayarlarsak, rapordaki kod yığınları boyunca tüm şekiller için geçerli olurlar.

Yeni bir Markdown dosyası oluşturduğumuzda, dosyanın başında, “set” adlı kod yığınında görünen kod yığınına dikkat edelim. Bu kod parçasında “knitr” paketi “knitr::” ile çağrılmaktadır. Knitr paketi, her kod yığınını çalıştıran ve belgeyi ören şeydir. Bu yığında, knitr, dosya örüldüğünde belgedeki her yığın için belirtilen seçenekleri global varsayılanlar olarak kullanacaktır.

opts_chunk$set() ile global olarak ayarlamak istediğimiz seçenekleri echo=TRUE argümanından önceki parantezlere ekleyebiliriz. Örneğin, burada tırnak içinde fig.align=“left” ekliyoruz ve raporu ördüğümüzde hizalamanın belge boyunca tüm şekillere yansıtıldığını görüyoruz. Bu yığın içinde görünen include ve echo seçeneklerini ilerleyen bölümlerde inceleyeceğiz.

6 Raporu Düzenleme

Madde imi, numaralandırma veya tablolar kullanarak raporunuza daha fazla bilgi ekleyebiliriz.

6.1 Madde imi/numaralandırma

Öğeleri madde imli listeye herhangi bir kod parçasının dışında bir yıldız, kısa çizgi veya artı işareti kullanılarak ekleriz.

Listedeki bir öğeden önce girinti ekleyerek liste düzeyi biçimlendirmesini yapılandırabilirsiniz. Bir madde işaretinin girintilenmesi onu bir alt madde işareti haline getirecektir.

  • Afrika

    • Fildişi

    • Nijerya

  • Asya

    • Güney Kore

    • Kazakstan

Alternatif olarak, listedeki her bir öğenin önüne nokta ile sayı ekleyerek numaralı bir liste oluşturabiliriz. Dosyayı ördüğümüzde listenin rapora eklendiğini görebiliriz.

  1. Afrika

    • Fildişi

    • Nijerya

  2. Asya

    • Güney Kore

    • Kazakstan

Not: Madde imi ve numaralandırma ilgili metin seçilerek visual sekmesinde yer alan format bölümündeki “Bullets & Numbering” aracılığıyla da yapılabilir.

6.2 Tablo ekleme-kable()

knitr paketindeki kable() fonksiyonunu kullanarak rapora tablolar ekleyebiliriz. Her kod parçasını çalıştıran ve belgeyi ören şey knitr paketidir. Tabloyu özelleştirmek için bir dizi seçenek vardır, ancak hücreleri birleştirme gibi görevleri gerçekleştirmek için tablo içindeki verileri biçimlendirmek mümkün değildir. Bu veri düzenleme görevleri, tabloyu oluşturmak için kable() kullanılmadan önce yapılmalıdır. Bu nedenle aşağıda kodu verilen nesne oluşturulmuştur.

turkey_investment_projects_2012_summary<-turkey_investment_projects_2012[,c(5,8,13)]

turkey_investment_projects_2012_summary, 2012 mali yılında Türkiye’deki yürütülen projelere ilişkin bazı bilgileri içermektedir. Bu bilgiyi bir tibble olarak yazdırmak yerine, kable() fonksiyonunu çağırabilir ve ona veri kümesinin adını aktarabiliriz. Dosyayı ördüğümüzde, verilerin bir tablosunu görürüz.

kable(turkey_investment_projects_2012_summary)
project_name status total_ifc_investment_as_approved_by_board_million_usd
Finansbank DPR Completed 75.00
OzU Active 42.50
Izmir Muni Active 58.53
KKagit Completed 50.00
Superfilm Active 45.00
MNT Active 30.00
Fibabanka Women Completed 30.00
Mediterra CP Active 20.00

Tabloda yer alan son sütun adı çok uzun ve anlaşılması zordur. Sütun adlarını kable() fonksiyonu içindeki col.names argümanını kullanarak değiştirebiliriz. c fonksiyonunu kullanarak nihai tabloda görünmesini istediğimiz sütun adlarının bir listesini iletiriz.

kable(turkey_investment_projects_2012_summary, col.names = c("Proje Adı","Durumu", "Toplam Bütçesi"))
Proje Adı Durumu Toplam Bütçesi
Finansbank DPR Completed 75.00
OzU Active 42.50
Izmir Muni Active 58.53
KKagit Completed 50.00
Superfilm Active 45.00
MNT Active 30.00
Fibabanka Women Completed 30.00
Mediterra CP Active 20.00

Ayrıca align bağımsız değişkenini kullanarak tablo içindeki sütun hizalamasını da değiştirebiliriz. Sütunlar için varsayılan hizalama sayısal için sağ ve diğerleri için sol şeklindedir. Bunun mevcut tabloya yansıdığını görüyoruz; toplam yatırım sağa, proje adı ve durumu ise sola hizalanmış.

Hizalama tek bir harf kullanılarak belirtilir: sol için “l”, sağ için “r” ve merkez için “c”. Üç sütunumuz olduğundan ve tüm sütunların ortaya hizalanmasını istersek, align=“ccc” olarak belirtiriz.

kable(turkey_investment_projects_2012_summary,
      col.names = c("Proje Adı","Durumu", "Toplam Bütçesi"),
      align = "ccc")
Proje Adı Durumu Toplam Bütçesi
Finansbank DPR Completed 75.00
OzU Active 42.50
Izmir Muni Active 58.53
KKagit Completed 50.00
Superfilm Active 45.00
MNT Active 30.00
Fibabanka Women Completed 30.00
Mediterra CP Active 20.00

Son olarak, tabloya bir başlık eklemek isteyebiliriz; bunu “caption” argümanını kullanarak ve başlığı bir dize olarak aktararak yapabiliriz. Burada, “Tablo 1.1 2012 mali yılında Türkiye’deki projeler için yatırım özeti” başlığını ekleyelim.

kable(turkey_investment_projects_2012_summary,
      col.names = c("Proje Adı","Durumu", "Toplam Bütçesi"),
      align = "ccc", caption = "Tablo 1.1 2012 mali yılında Türkiye'deki projeler için yatırım özeti")
Tablo 1.1 2012 mali yılında Türkiye’deki projeler için yatırım özeti
Proje Adı Durumu Toplam Bütçesi
Finansbank DPR Completed 75.00
OzU Active 42.50
Izmir Muni Active 58.53
KKagit Completed 50.00
Superfilm Active 45.00
MNT Active 30.00
Fibabanka Women Completed 30.00
Mediterra CP Active 20.00

7 Kod Yığını Seçenekleri

Kod parçalarının nasıl ekleneceğini, etiketleneceğini ve değiştirileceğini öğrendik. Şimdi, örgü raporunu değiştirmek için kullanabileceğimiz bazı kod yığını seçeneklerini inceleyelim.

7.1 Include Seçeneği

Alıştırmalarda gördüğümüz ve veri olarak adlandırılan kod yığınına bakalım. Veri yığını, her alıştırma için gereken verileri ve paketleri yüklemiştir. Kod yığını adından sonra, küme parantezleri içinde include eşittir FALSE ifadesini gördüğümüze dikkat edin.

include seçeneği Include seçeneği, kod ve sonuçların raporda görünüp görünmeyeceğini belirler. include seçeneği FALSE olduğunda, kod ve sonuçlar raporda görünmez. Dosya örüldüğünde, kod yığını çalışır ve sonuçlar her alıştırmadaki veri yığını gibi dosya boyunca kullanılabilir.

include için varsayılan bağımsız değişken TRUE’dir. Önceki alıştırmalardaki diğer kod parçalarında include belirtilmediğinden, bu parçalardaki kod ve sonuçlar rapora dahil edilmiştir.

7.2 Echo Seçeneği

İlgili bir seçenek de echo’dur. echo seçeneği FALSE olarak ayarlandığında, kodun örgü dosyasında görünmesini engeller, ancak kodun sonuçlarını raporda yer alır.

Bu, grafikler oluştururken kullanabileceğimiz bir seçenektir. Raporun grafiği içermesini isterken, raporun grafiği oluşturan kodu görüntülemesini istemeyebiliriz.

Include’a benzer şekilde, echo için de varsayılan değer TRUE’dir. Bunu önceki alıştırmalarda da görmüştük, çünkü rapor varsayılan olarak hem kodu hem de bir kod yığınından elde edilen sonuçları görüntüler.

7.3 Eval Seçeneği

eval seçeneği, bir kod yığınındaki kodu değerlendirmek isteyip istemediğimizi belirtir. Bir kod yığınını mevcut rapordan hariç tutmak istiyorsak, eval=FALSE olarak ayarlayabiliriz.

ggplot(turkey_investment_projects_2012,
       aes(x=date_disclosed,
           y=total_ifc_investment_as_approved_by_board_million_usd,
           color=status))+
  geom_point()+
  labs(x="Ay",
       y= "Toplam Yatırım (Milyon $)",
       title= "Türkiye 2012 Yılı Yatırımı")

eval FALSE olduğunda, kod çalıştırılmaz ve çıktılar rapora dahil edilmez. Ancak kodun kendisinin hala raporda göründüğüne dikkat edelim.

Eval seçeneği include seçeneğinden farklıdır, zira burada kod raporu etkilemememktedir. Hatırlarsak, include seçeneği ile, kod örülmüş raporda yer almasa bile, çalışmakta ve çıktısı olan nesnelere başvuran diğer kod yığınlarını da etkilemekte idi.

Rapor örüldüğünde eval için varsayılan değer TRUE olup aksi belirtilmedikçe rapordaki tüm kod parçaları çalıştırılır.

Kod yığını seçenekleri özet tablosu
Kod çalışıyor mu? Kod raporda görünür mü? Çıktı raporda görünür mü?
include=FALSE Evet Hayır Hayır
echo=FALSE Evet Hayır Evet
eval=FALSE Hayır Evet Hayır

7.4 Collapse Seçeneği

collapse seçeneği, kodun ve herhangi bir metin çıktısının birden fazla bloğa bölünüp bölünmeyeceğini veya nihai raporda tek bir bloğa dahil edilip edilmeyeceğini belirler. Grafik oluştururken daha önce gördüğümüz uyarı mesajlarını düşünelim. Örneğin Türkiye Yıllık Yatırım grafiğini çizmek için oluşturduğumuz kod için uyarı mesajı almıştık. collapse seçeneğini kullanarak bunu nihai raporda değiştirebiliriz.

collapse için varsayılan seçenek FALSE’dir. Bu, kod yığınından gelen kodun ve koddan kaynaklanan metin çıktısının örgü raporda ayrılacağı anlamına gelir. Bunun yerine collapse eşittir TRUE olarak belirtirsek, kod ve metin çıktısı örgü raporunda tek bir blokta birleştirilir.

ggplot(turkey_investment_projects, aes(x=date_disclosed, y=total_ifc_investment_as_approved_by_board_million_usd))+
  geom_point()+
  labs(x="Yıl",
       y= "Toplam Yatırım (Milyon $)",
       title= "Türkiye Yıllık Yatırım")
## Warning: Removed 3 rows containing missing values (`geom_point()`).

7.5 Uyarılar/Warnings

Görselleştirmeleri oluştururken daha önce uyarılarla karşılaşmıştık. Uyarı yığını seçeneğinin varsayılanı TRUE’dur. Yukarıda uyarı mesajlarının örme raporundaki koddan ayrı bir blokta görünmesini önlemek için collapse=TRUE kullanmayı öğrenmiştik. Ancak, uyarı mesajını tamamen kaldırmak isteyebiliriz ve bunu warning=FALSE ile yapabiliriz.

ggplot(turkey_investment_projects,
       aes(x=date_disclosed,
           y=total_ifc_investment_as_approved_by_board_million_usd))+
  geom_point()+
  labs(x="Yıl",
       y= "Toplam Yatırım (Milyon $)",
       title= "Türkiye Yıllık Yatırım")

7.6 Mesajlar

Şimdiye kadar raporlarımızda mesajlarla karşılaşmadık. Ancak setup kod yığınımızdaki include değerini FALSE yaparsak örme işleminde mesaj çıktısı elde edebiliriz.

Bu mesajlar, bu yığın içinde yüklenen paketler ve veri dosyalarıyla ilgilidir. Eğer message=FALSE olarak ayarlarsak, bu mesajlar raporda görünmez.

7.7 Hatalar/Errors

Hata seçeneği, rapor örülürken koddaki hataların nasıl ele alınacağını belirler. Hata için varsayılan seçenek FALSE’dır, yani bir hata varsa ve dosyayı örmeye çalışırsak, rapor bir hatayla karşılaştığında örmeyi durduracak ve hatayı döndürecektir.

Bunun yerine error=TRUE olarak ayarlarsak, raporumuz kodda hatalar olsa bile örülecek ve rapor hataları içerecektir. Bu seçenek daha az kullanılır, ancak bir rapor üzerinde çalışırken hangi kod parçalarının beklendiği gibi çalıştığını ve hangi kod parçalarının hatalara neden olduğunu belirtmek için yararlı olabilir. Bu amaçla kullanabilme için error=TRUE komutunu global olarak ayarlamalıyız.

NOT. Bu kısımda açıklanan seçenekler kod yığınlarındaki ayarlar sekmesinden de belirlenebilir.

8 YAML Başlığı-II

Daha önce de belirtildiği gibi YAML başlığı, belge hakkındaki bilgilere karşılık gelen anahtar değer çiftleri olarak dosyanın meta verilerini içerir. Bu özel bölüme belgeyi tanımlayıcı girdiler eklediğimizi görmüştük. Burada bahsedilecek önemli bir belge girdisi içindekiler tablosudur (table of contents).

8.1 İçindekiler Tablosu/TOC

Belgeye içindekiler tablosunun eklenmesi, okuyuculara genel bir bakış sağlar. İçindekiler tablosu eklemek için YAML başlığına anahtar değer çifti olarak toc ve true ekleriz. YAML başlığında doğru girinti kullanılmadığı sürece dosya örülmeyecektir.

toc eklenmesi için öncelikle doküman içinde girintilemeliyiz. İçindekiler tablosu eklenmeden önce output: html_document aynı hizada yazılmış idi. Bu defa html_document’e “:” eklenmiş ve bir alt satırda girintili olarak yazılmıştır. toc: true anahtar değeri de bunun bir alt satırına ve görece ek girintili yazılmıştır. Aksi takdirde belge örülmeyecek ya da içindekiler tablosu oluşturmayacaktır.

İçindekiler tablosunda hangi düzey başlıkların görüneceğini toc_depth alanını ekleyerek belirleyebiliriz. toc_depth’ten sonra listelediğimiz sayı, içindekiler tablosunda listelenecek başlıkların boyutunu belirtir. Varsayılan olarak, görülecek başlık düzeyi HTML belgeleri için üç, PDF belgeleri için ikidir.

number_sections:true ile içindekiler tablosundaki başlıklara bölüm numaralandırması da ekleyebiliriz. Sayı bölümleri eklersek ve ondalık numaralandırmanın bir ile başlamasını istersek, rapordaki en yüksek düzeyli başlıklarda bir hash kullanmalıdır. Bu belgedeki en yüksek düzeyli başlıklar ikinci düzey olduğu için 0.1 ile başlamıştır.

HTML belgeleri için, içindekiler tablosunda bazı ek seçeneklerimiz vardır. YAML başlığında toc_float: true yazıldığında, içindekiler tablosu okuyucu belgede gezinirken sol tarafta sürekli olarak görünür kalmaya devam edecektir.

toc float içinde, collapsed ve smooth scroll seçeneklerini de kullanabiliriz. Daha önce ele aldığımız içindekiler tablosu seçenekleri olan toc ve toc_depth ayrı nitelikler iken, collapsed ve smooth scroll seçenekleri toc_float alanı içinde yuvalanmıştır. Bu seçenekler iç içe geçtiğinden, collapsed veya smooth scroll seçeneklerinden birini belirtirken toc_float alanından true değerini kaldırıp alt satıra geçilir ve görece girinti verilerek devam edilir.

collapse seçeneği kullanıldığında, bir kişi raporu okurken veya başka bir bölüme geçerken içindekiler tablosu bulunduğu başlıkta genişler. collapsed false olarak ayarlandığında, içindekiler tablosunun tamamı belirlenen başlık düzeyinde görünür olur. Bu örnekte daha iyi anlaşılması için başlık düzeyinin 3 yapıldığına dikkat edelim.

Smooth_scroll seçeneği içindekiler tablosundaki bir başlığa tıkladığında görüntülenen sayfa geçişinin nasıl olacağına ilişkindir. Varsayılan olarak true’dur ve başlıklar arasındaki geçişte ara sayfalar kayar biçimde görüntülenir. smooth_scroll false olarak ayarlandığında, geçiş keskin bir biçimde olur.

9 Parametre Kullanımı

Şimdiye kadar investment_services_projects verilerini kullanarak Türkiye’deki projeler hakkında bilgi sunan çıktılar oluşturduk. Bir senaryo olarak her bir ülke için ayrı ayrı rapor hazırlamamız istendiğini düşünelim. Aynı içeriğe sahip raporları ayrı ayrı oluşturmak ve manuel olarak düzenlemek çok fazla zaman ve çaba gerektirecekti. Yeni raporları manuel olarak düzenlemek yerine, farklı ülkeler için verileri özetleyen yeni raporları verimli bir şekilde oluşturmak için parametre oluşturma yöntemini kullanabiliriz.

9.1 Tekil parametre

Parametreler, YAML başlığında belirlenecek temel girdiler için belirli değerlere sahip bir rapor oluşturmak için kullanılır. Örneğin bu belgede belirleyeceğimiz herhangi bir ülke için rapor oluşturmaya yardımcı olacak bir parametre ekleyelim. Bunun için YAML başlığının içine params alanını ilave ediyoruz. Ardından bir satır daha ekleyip girintili olacak şekilde parametre adını ve ardından iki nokta üst üste ekliyoruz. Raporun odak noktası olacak ülkeyi belirtmek için kullanacağımız için bu parametreye country diyelim ve ülke olarak Türkiye’yi listeleyelim.

Burada Türkiye’nin tırnak içinde listelenmediğine ve raporun başarıyla örülebilmesi için YAML başlığında belirli girintilerin doğru kullanılması gerektiğine dikkat edelim.

Parametreyi ekledikten sonra, belgenin her bir öğesini, kodu, metni ve YAML başlığını belirli bir ülkeye yapılan referanslar açısından gözden geçirmeliyiz. Kodu gözden geçirirken, belirli bir ülkeye referans veren tüm kod parçalarını ve nesneleri yeniden adlandırmak isteriz.

Öncelikle her bir kod yığını içinde, belirli bir ülkeye atıfta bulunduğumuz tüm örnekleri gözden geçirip params$country ile değiştiriyoruz; burada ülke, YAML başlığına eklediğimiz parametredir. Burada karşılaşabileceğimiz sorunlardan birisi, örneğimizde olduğu gibi metin dilimiz ile değişken değerlerinin farklı olmasıdır. Bu sorunla karşılaşmamak için değişken isimlerini veri setinde değiştirmeliyiz.

country_investment_projects<-investment_services_projects %>% filter(country==params$country)

country_investment_projects
## # A tibble: 85 × 13
##    date_disclosed      country ifc_country_code sector              project_name
##    <dttm>              <chr>   <chr>            <chr>               <chr>       
##  1 2018-07-18 00:00:00 Turkey  TUR              Financial Institut… Abank SME   
##  2 2018-06-13 00:00:00 Turkey  TUR              Financial Institut… Garanti Ban…
##  3 2018-06-06 00:00:00 Turkey  TUR              Manufacturing       Asas Turkey 
##  4 2017-11-01 00:00:00 Turkey  TUR              Financial Institut… TSKB Sustai…
##  5 2017-09-27 00:00:00 Turkey  TUR              Financial Institut… DCM Is Gree…
##  6 2017-08-16 00:00:00 Turkey  TUR              Manufacturing       Tupras      
##  7 2017-08-09 00:00:00 Turkey  TUR              other               Antalya Mun…
##  8 2017-07-26 00:00:00 Turkey  TUR              Tourism, Retail, a… YMI WC      
##  9 2017-07-06 00:00:00 Turkey  TUR              Financial Institut… DCM Akbank …
## 10 2017-06-07 00:00:00 Turkey  TUR              Financial Institut… DCM Green M…
## # ℹ 75 more rows
## # ℹ 8 more variables: project_number <dbl>, company_name <chr>, status <chr>,
## #   ifc_investment_for_risk_management_million_usd <dbl>,
## #   ifc_investment_for_guarantee_million_usd <dbl>,
## #   ifc_investment_for_loan_million_usd <dbl>,
## #   ifc_investment_for_equity_million_usd <dbl>,
## #   total_ifc_investment_as_approved_by_board_million_usd <dbl>

Ayrıca oluşturduğumuz grafiklerde kullanılan etiketleri gözden geçirmemiz ve belirli bir ülkeye yapılan referansları kaldırmamız gerekir. Metni gözden geçirirken, parametreyi kullanarak yeni bir dosya ördüğümüzde, dosyanın belirttiğimiz ülkeyle tutarlı olması için belirli bir ülkeye yapılan referansları düzenleriz. Metnin veya başlığın belirli bir ülke adına atıfta bulunduğu durumlarda, ` r params$country ` dizimini kullanırız.

“Turkey’in 2012 mali yılındaki yatırım projeleri için toplam bütçesi 351.03 milyon Dolar’dır.”

Belgeyi bu şekilde düzenlersek parametreyi değiştirerek başka bir ülke için kolayca rapor oluşturabiliriz.

9.2 Çoklu parametre

Yukarıda tek bir parametre için yaptığımız işlemi birden çok parametre için de yapabiliriz. Bu sayede raporlarda istediğimiz kadar marametreye bağlı değişkenlik yaratırız. Örneğin çalıştığımız belgede 2012 mali yılı verilerini kullanmıştık. Bu mali yılı bir parametre olarak tanımlayarak sadece ülke bazlı değil, mali yıl bazlı da değişiklikler yapabiliriz. Ancak bunları yaparken yukarıda yaptığımız gibi başlık, metin ve kod yığınlarının belirli yıl veya ülkelere referans vermeyecek şekilde düzenlemeye dikkat etmeliyiz.

Türkiye’ye ait 2012 mali yılındaki toplam yatırım bütçesini veren kodu parametre kullanmaya uygun hale getirelim. Unutmayalım ki, burada yaptığımız işlemleri hazırlayacağımız belgenin tamamına uygulamadan dinamik bir rapor elde edemeyiz.

Kod yığını aşağıdaki şekilde düzenlenmiştir. Dikkat edilirse herhangi bir ülke ismi veya başlangıç ve bitiş tarihi kullanılmadan Türkiye’ye ait 2015 mali yılına ait projeler elde edilmiştir.

country_annual_investment_projects<-investment_services_projects %>% filter(country==params$country,
                                                                         date_disclosed >= params$start,
                                                                         date_disclosed<=params$end)

country_annual_investment_projects
## # A tibble: 18 × 13
##    date_disclosed      country ifc_country_code sector              project_name
##    <dttm>              <chr>   <chr>            <chr>               <chr>       
##  1 2015-05-14 00:00:00 Turkey  TUR              Infrastructure      Izsu Sewera…
##  2 2015-04-17 00:00:00 Turkey  TUR              Tourism, Retail, a… Mercury     
##  3 2015-04-06 00:00:00 Turkey  TUR              Manufacturing       Trakya Cam …
##  4 2015-03-26 00:00:00 Turkey  TUR              Financial Institut… Seker MSME  
##  5 2015-03-12 00:00:00 Turkey  TUR              Funds               Taxim Capit…
##  6 2015-03-09 00:00:00 Turkey  TUR              Financial Institut… Odeabank Gr…
##  7 2015-02-25 00:00:00 Turkey  TUR              Financial Institut… FinansL EE …
##  8 2015-02-19 00:00:00 Turkey  TUR              Infrastructure      UNIT Equity 
##  9 2015-01-16 00:00:00 Turkey  TUR              Financial Institut… Iyzico      
## 10 2014-12-16 00:00:00 Turkey  TUR              Telecommunications… Zenium      
## 11 2014-12-05 00:00:00 Turkey  TUR              Manufacturing       Soda Sanayii
## 12 2014-11-11 00:00:00 Turkey  TUR              Infrastructure      HKA         
## 13 2014-11-04 00:00:00 Turkey  TUR              Infrastructure      Izmir Railc…
## 14 2014-10-31 00:00:00 Turkey  TUR              Health and Educati… Etlik Health
## 15 2014-09-15 00:00:00 Turkey  TUR              Infrastructure      Gama Enerji 
## 16 2014-07-11 00:00:00 Turkey  TUR              Health and Educati… Kayseri Hea…
## 17 2014-07-07 00:00:00 Turkey  TUR              Infrastructure      ACWA Kirikk…
## 18 2014-07-02 00:00:00 Turkey  TUR              Financial Institut… YKL Sustain…
## # ℹ 8 more variables: project_number <dbl>, company_name <chr>, status <chr>,
## #   ifc_investment_for_risk_management_million_usd <dbl>,
## #   ifc_investment_for_guarantee_million_usd <dbl>,
## #   ifc_investment_for_loan_million_usd <dbl>,
## #   ifc_investment_for_equity_million_usd <dbl>,
## #   total_ifc_investment_as_approved_by_board_million_usd <dbl>

YAML’da fy ile belirtilen mali yıl tek parametrede yaptığımız gibi başlık veya metinlere eklenebilir.

10 Rapor Biçimlendirme

Hazırladığımız belgeyi daha ilgi çekici hale getirmek için renkleri ve yazı tiplerini kullanarak özelleştirebiliriz. İlk olarak, stilleri doğrudan raporda değiştireceğiz.

10.1 Öğe stilini kod ile belirleme

Herhangi bir kod parçasının stil özelliklerini belirlemek için onu <style> ve </style> ile çevreliyoruz. Öğeleri eklemek için, belirli bir girinti kullanarak küme parantezleri içine alınmış özelliklerle belgenin belirli bir bölümüne başvururuz.

Yaygın olarak kullanılan özellikler arasında metin için “color”, “background-color”, “font-family” ve “font-size” yer alır. Stiller bölümünü, herhangi bir kod parçasının dışında, belgenin herhangi bir yerine dahil edebiliriz. Ancak genellikle bölümleri düzenli tutmak için, belgenin en üstüne, YAML başlığının altına eklenir.

Belgenin geneli ile başlarsak. Stil göstergelerinin içine body{} ile rapor metni için kullanmak istediğimiz rengi ekliyoruz. Kırmızı veya mavi gibi bir renk adı ve ; ekleyebiliriz. Bir özellikten sonra ; eklemeyi unutursak hata almayız, ancak stil güncellenmez.

Renkleri belirtmek için hex kodlarını da kullanabiliriz. Renk hex kodlarına bakmak için kullanabileceğimiz birçok referans vardır. İnternette bu kodlara ilişkin birçok sayfa yeralmaktadır.

Burada arka plan rengi eklenmiş ve metin fontunu font-family kullanarak değiştirilmiştir.

Kod parçalarını pre{} ile dahil ederek metin rengini ve arka plan rengini değiştirebiliriz.

İçindekiler tablosu özellikleri #TOC{} kullanılarak belirtilir. Yukarıdaki özellikler burada da kullanılabilir. Ayrıca kenarlık border-color ve font boyutunu font-size ve “px” ile bir sayı belirterek yazı tipi boyutunu değiştirebiliriz.

Başlık özellikleri #header{} ile belirtilir. Burada, renk, arka plan rengi, yazı tipi ailesi ve yazı tipi boyutu eklenebilir. Opaklık ve ondalık kullanarak arka plan rengi saydamlığını değiştirebiliriz. Varsayılan değer 1.0’dir, biz burada 0.7 kullandık.

Burada bütün başlık öğelerinin birlikte değiştirildiğine dikkat edelim. Alternatif olarak, başlık için h1.title{}, yazar için h4.author{} ve tarih için h4.date{} kullanarak her bir başlık öğesini ayrı ayrı değiştirebiliriz.

10.2 Öğe Stilini CSS dosyası ile Belirleme

Belgeye kod ile stil eklemek yerine, belirli stilleri içeren bir CSS dosyasına başvurabiliriz. Bu sayede, CSS kodunu kopyalayıp oluşturduğumuz her yeni Markdown dosyasına yapıştırmamıza gerek kalmadan bir CSS dosyasını birçok farklı rapor için yeniden kullanabileceğimiz anlamına gelir. Stil bilgilerimizi txt gibi bir metin dosyasına aktaralım ve .css uzantısını kullanarak çalıştığımız klasöre kaydedelim.

Daha sonra YAML başlığına bir css alanı ve stil sayfasının adını ekleyelim. Biz şimdilik dosya adını bicim.css olarak belirledik. Dosyayı ördüğümüzde, belirtilen stiller raporda görünecektir.