# install.packages("tidyverse", "stringr", "RCurl", "XML", "plyr")
# plyr ldply fonksiyonu için gerekli
library(plyr)
library(tidyverse)
## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.2 ──
## ✔ ggplot2 3.4.0 ✔ purrr 0.3.5
## ✔ tibble 3.1.8 ✔ dplyr 1.0.10
## ✔ tidyr 1.2.1 ✔ stringr 1.5.0
## ✔ readr 2.1.3 ✔ forcats 0.5.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::arrange() masks plyr::arrange()
## ✖ purrr::compact() masks plyr::compact()
## ✖ dplyr::count() masks plyr::count()
## ✖ dplyr::failwith() masks plyr::failwith()
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::id() masks plyr::id()
## ✖ dplyr::lag() masks stats::lag()
## ✖ dplyr::mutate() masks plyr::mutate()
## ✖ dplyr::rename() masks plyr::rename()
## ✖ dplyr::summarise() masks plyr::summarise()
## ✖ dplyr::summarize() masks plyr::summarize()
library(stringr)
library(RCurl)
##
## Attaching package: 'RCurl'
##
## The following object is masked from 'package:tidyr':
##
## complete
library(XML)
anahtar <- "***********"
# install.packages("Rcurl", "XML","plyr")
tcmb_evds<-function(veriseti,baslangic,son, anahtar) {
adres="https://evds2.tcmb.gov.tr/service/evds/"
seri=paste("series=",veriseti, sep="")
tarihler=paste("&startDate=",baslangic,"&endDate=",son, sep="")
tamamlayici=paste("&type=xml&key=",anahtar, sep="")
veriadresi<-paste(adres,seri,tarihler,tamamlayici, sep="")
xmlveri <- getURL(veriadresi, .opts = list(ssl.verifypeer = FALSE))
return(xmlveri)
}
#buraya çekmek istediğiniz verinin evds2 kodunu, veri başlangıç tarihini, veri bitiş tarihini girin#
istenilen_veri <- "TP.BO.SBIL01"
baslangic_tarihi <- "01-01-2022"
bitis_tarihi <- "23-12-2022"
xmlveriler<-tcmb_evds(istenilen_veri, baslangic_tarihi, bitis_tarihi ,anahtar)
#xmlveriler = verilerin xml formatı
df <- ldply(xmlToDataFrame(xmlveriler))
df <- as.data.frame(df)
istenilen_veri_satir <- str_replace_all(istenilen_veri, fixed("."), "_" )
# istenilen_veri_satir
###########################!!!!! ÖNEMLİ!!!!!###################
##dataframe’i düzenleme## ##View(df) komutundan sonra istenilen
satırların (Tarih ve Değer) satır numarasını aşağıdaki ### df <-
df[c(a,b)] komutuna yazalım. Artık buna gerek kalmadı
çünkü bunu da otomatik olacak şekilde ayarladım
rownames(df) <- c(df$.id)
Bu chunk’ın tamamını iki defa çalıştırmamaya dikkat edin. Satır silme komutu veri silebilir dikkat. Öyle bir durumda en baştaki “df <-” ksımından tekrar başlayın.
df <- df[c("Tarih", istenilen_veri_satir),]
df <- t(df)
df <- as.data.frame(df)
df <- df[-1,]
colnames(df)[2] <- istenilen_veri_satir
colnames(df) <- ifelse(colnames(df) %in% istenilen_veri_satir,"Değer",colnames(df) <- colnames(df))
df <- as.data.frame(df)
df$Değer <- as.numeric(df$Değer)
df <- df|>
filter(!is.na(df$Değer))
#!!!####!!!Bu kısım tarih düzenlemesi ve deneysel. Veriden
veriye farklılık olabilir , o yüzden dikkatli kullanın, asıl verinin
gitmemesi için yeni kolon açtım!!!###.######### Bu
kısımdaki karışıklığı da halletim fakat yine de her verideki tarih
formatını bilmediğimden emin olmak için başka kolon ile devam
edin
df$Tarih1 <- ifelse((nchar(df$Tarih)<10),paste(df$Tarih,"-01",sep = ""),paste(df$Tarih,"",sep = ""))
#Asıl veriyi kaybetmemek için yeni kolondan devam ediyorum. Farklı tarih formatlarını tek formata çevirip kolonun yapısını date'e çevirmeye çalışıyorum. eğer "ambigous" hatası alıyorsanız dataframe'i yaparken satır numaralarını yanlış girmiş olabilirsiniz. Veya yapamadağım bir tarihi formatı da olabilir.
str(df)
## 'data.frame': 51 obs. of 3 variables:
## $ Tarih : chr "07-01-2022" "14-01-2022" "21-01-2022" "28-01-2022" ...
## $ Değer : num 4.78e+09 4.78e+09 4.76e+09 4.79e+09 4.82e+09 ...
## $ Tarih1: chr "07-01-2022" "14-01-2022" "21-01-2022" "28-01-2022" ...
df$Tarih1 <- as.Date(df$Tarih1, tryFormats = c("%d-%m-%Y","%Y-%m-%d"))
plot(df$Tarih1, df$Değer,type = "h")
ggplot(df)+
geom_line(aes(x =Tarih1, y = Değer))+
labs(title = istenilen_veri_satir)