1 Zakład Bioinformatyki, Instytut Informatyki, Uniwersytet w Białymstoku

Correspondence: Jarosław Kotowicz <>

1 Praca z bazami danych ekonomicznych na przykładzie danych udostępnianych przez NBP

Podczytanie biblioteki rnbp

library(rnbp)
library(tidyverse)

1.1 Złoto

Pobranie danych dotyczących ceny złota z ostatnich 93 dni get_last_n_goldprices oraz wyłuskanie tabeli $content.

gold.93 <- get_last_n_goldprices(93)
gold.93.df <- gold.93$content

Obejrzenie jak dane wyglądają (początkowe 12 wierszy)

gold.93.df %>% head(12)

Wyliczymy cenę uncji złota w PLN oraz w USD.

1.1.1 Wyznaczamy wagę uncji w gramach.

ozt <- 31.1034768

1.1.2 Bieżący kurs dolarów amerykańskich USD (funkcja get_current_exchangerate).

waluta_USD <- get_current_exchangerate("A", "USD")
USD.cena <- (waluta_USD$content[[4]])$mid

1.1.3 Kurs dolara amerykańskiego USD w ciągu ostatnich 93 dni.

waluta_USD.93 <- get_last_n_exchangerates("A", "USD", 93)
USD.cena.93 <-(waluta_USD.93$content)[[4]]$mid

1.1.4 Cena uncji złota w PLN

gold.93.df <- gold.93.df %>%
  mutate(cena.ozt.PLN = cena*ozt)

1.1.5 Cana uncji złota w USD (cena.ozt.USD cena według bieżącego kursu i cena.ozt.USD.93 cena według kursu z dnia wyceny złota).

gold.93.df <- gold.93.df %>%
  mutate(cena.ozt.USD = cena.ozt.PLN/USD.cena,
         cena.ozt.USD.93 = cena.ozt.PLN/USD.cena.93)

1.1.6 Wykres zmian cen złota.

gold.93.df %>% ggplot(aes(x = data, y = cena)) +
  geom_point(color = "gold") +
  geom_line(aes(x = data, y = cena), stat="identity", color = "gold3")+
  labs(title = "Kształtowanie się ceny złota w NBP o okresie ostatnich 93 dni",
       x = "Data",
       y = "Cena [PLN/g]",
       caption = "Opracowanie własne na podstawie danych NBP.") +
  theme(plot.title = element_text(hjust=0.5))

1.2 Waluty

1.2.1 Pobieranie bieżącego kursu euro

waluta_EUR <- get_current_exchangerate("A", "EUR")

1.2.1.1 Co właściwie zostało pobrane.

waluta_EUR %>% class()
[1] "nbp_api_response"
waluta_EUR %>% length()
[1] 3
waluta_EUR %>% names
[1] "content"  "path"     "response"
waluta_EUR$content %>% length()
[1] 4
waluta_EUR$content %>% names
[1] "table"    "currency" "code"     "rates"   
(waluta_EUR$content)$rates %>% class
[1] "data.frame"
(waluta_EUR$content)$rates %>% dim
[1] 1 3
(waluta_EUR$content)$rates

Tutaj ostateczny kurs średni euro

((waluta_EUR$content)$rates)$mid
[1] 4.5523

1.2.1.2 Jak to zrobić inaczej przy pomocy operatora odwołania do n-tego elementu listy [[n]]

((waluta_EUR[[1]])[[4]])[[3]]
[1] 4.5523

1.2.1.3 Można to mieszać

(waluta_EUR$content)[[4]]
((waluta_EUR$content)[[4]])[[3]]
[1] 4.5523
((waluta_EUR$content)[[4]])$mid
[1] 4.5523

1.2.2 Pobieranie n ostatnich kursów waluty

waluta_EUR.93 <- get_last_n_exchangerates("A", "EUR", 93)
(waluta_EUR.93$content)$rate

1.2.3 Wykonanie rysunku zmian kursu euro w okresie ostatnich 93 dni.

(waluta_EUR.93$content)$rate %>% 
  ggplot(aes(x = effectiveDate, y = mid)) +
  geom_point(color = "blue") +
  geom_line(aes(x = effectiveDate, y = mid), stat="identity", color = "blue")+
  labs(title = "Kształtowanie się ceny Euro w NBP o okresie ostatnich 93 dni",
       x = "Data",
       y = "Cena euro [PLN]",
       caption = "Opracowanie własne na podstawie danych NBP.") +
  theme(plot.title = element_text(hjust=0.5))

2 Praca domowa

  1. Weź trzy waluty (GBP, USD, JPY), pobierz dane z ostatnich 93 dni, stwórz ramkę danych zwierającą daty, i kursy tych walut, narysuj na jednym wykresie zmienę ich kursu.
  2. Dla złota narysuj wykres zmian ceny w ciągu ostatnich 93 dni, z tym mają być dwie osi Y (na prawym i lewym końcu obszaru rysunku) na lewym brzegu ma być cena w PLN, a na prawym w USD.
LS0tDQp0aXRsZTogIkluZm9ybWF0eWthIGVrb25vbWljem5hIChraWVydW5layBpbmZvcm1hdHlrYSBpIGVrb25vbWV0cmlhKSAtIGxhYm9yYXRvcml1bSA3Ig0KYXV0aG9yOg0KLSBKYXJvc8WCYXcgS290b3dpY3o6DQogICAgY29ycmVzcG9uZGVuY2U6IG5vDQogICAgZW1haWw6IGoua290b3dpY3pAdXdiLmVkdS5wbA0KICAgIGluc3RpdHV0ZTogSUlVd0INCmRhdGU6ICIzMSBtYXJjYSAyMDIwIg0Kb3V0cHV0Og0KICBodG1sX25vdGVib29rOg0KICAgIGZpZ19jYXB0aW9uOiB5ZXMNCiAgICBoaWdobGlnaHQ6IGhhZGRvY2sNCiAgICBudW1iZXJfc2VjdGlvbnM6IHllcw0KICAgIHBhbmRvY19hcmdzOg0KICAgIC0gLS1sdWEtZmlsdGVyPXNjaG9sYXJseS1tZXRhZGF0YS5sdWENCiAgICAtIC0tbHVhLWZpbHRlcj1hdXRob3ItaW5mby1ibG9ja3MubHVhDQogICAgdGhlbWU6IGNlcnVsZWFuDQogICAgdG9jOiB5ZXMNCmluc3RpdHV0ZToNCi0gSUlVd0I6IFpha8WCYWQgQmlvaW5mb3JtYXR5a2ksIEluc3R5dHV0IEluZm9ybWF0eWtpLCBVbml3ZXJzeXRldCB3IEJpYcWCeW1zdG9rdQ0KY3NsOiBiaWctZGF0YS1hbmQtaW5mb3JtYXRpb24tYW5hbHl0aWNzLmNzbA0KYWx3YXlzX2FsbG93X2h0bWw6IHllcw0KLS0tDQoNCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQ0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBUUlVFKQ0KYGBgDQoNCiMgUHJhY2EgeiBiYXphbWkgZGFueWNoIGVrb25vbWljem55Y2ggbmEgcHJ6eWvFgmFkemllIGRhbnljaCB1ZG9zdMSZcG5pYW55Y2ggcHJ6ZXogTkJQDQoNCmBgYHtyIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0UsIGluY2x1ZGU9RkFMU0V9DQpybShsaXN0ID0gbHMoKSkNCmBgYA0KDQpQb2Rjenl0YW5pZSBiaWJsaW90ZWtpICoqcm5icCoqDQpgYGB7cn0NCmxpYnJhcnkocm5icCkNCmBgYA0KDQpgYGB7cn0NCmxpYnJhcnkodGlkeXZlcnNlKQ0KYGBgDQoNCiMjIFrFgm90bw0KDQpQb2JyYW5pZSBkYW55Y2ggZG90eWN6xIVjeWNoIGNlbnkgesWCb3RhIHogb3N0YXRuaWNoIDkzIGRuaSAqZ2V0X2xhc3Rfbl9nb2xkcHJpY2VzKiBvcmF6IHd5xYJ1c2thbmllIHRhYmVsaSAqJGNvbnRlbnQqLg0KYGBge3J9DQpnb2xkLjkzIDwtIGdldF9sYXN0X25fZ29sZHByaWNlcyg5MykNCmdvbGQuOTMuZGYgPC0gZ29sZC45MyRjb250ZW50DQpgYGANCg0KT2JlanJ6ZW5pZSBqYWsgZGFuZSB3eWdsxIVkYWrEhSAocG9jesSFdGtvd2UgMTIgd2llcnN6eSkNCmBgYHtyfQ0KZ29sZC45My5kZiAlPiUgaGVhZCgxMikNCmBgYA0KDQpXeWxpY3p5bXkgY2VuxJkgdW5jamkgesWCb3RhIHcgUExOIG9yYXogdyBVU0QuDQoNCiMjIyBXeXpuYWN6YW15IHdhZ8SZIHVuY2ppIHcgZ3JhbWFjaC4NCmBgYHtyfQ0Kb3p0IDwtIDMxLjEwMzQ3NjgNCmBgYA0KIyMjIEJpZcW8xIVjeSBrdXJzIGRvbGFyw7N3IGFtZXJ5a2HFhHNraWNoICpVU0QqIChmdW5rY2phICpnZXRfY3VycmVudF9leGNoYW5nZXJhdGUqKS4NCmBgYHtyfQ0Kd2FsdXRhX1VTRCA8LSBnZXRfY3VycmVudF9leGNoYW5nZXJhdGUoIkEiLCAiVVNEIikNClVTRC5jZW5hIDwtICh3YWx1dGFfVVNEJGNvbnRlbnRbWzRdXSkkbWlkDQpgYGANCiMjIyBLdXJzIGRvbGFyYSBhbWVyeWthxYRza2llZ28gKlVTRCogdyBjacSFZ3Ugb3N0YXRuaWNoIDkzIGRuaS4NCmBgYHtyfQ0Kd2FsdXRhX1VTRC45MyA8LSBnZXRfbGFzdF9uX2V4Y2hhbmdlcmF0ZXMoIkEiLCAiVVNEIiwgOTMpDQpVU0QuY2VuYS45MyA8LSh3YWx1dGFfVVNELjkzJGNvbnRlbnQpW1s0XV0kbWlkDQpgYGANCiMjIyBDZW5hIHVuY2ppIHrFgm90YSB3IFBMTiANCmBgYHtyfQ0KZ29sZC45My5kZiA8LSBnb2xkLjkzLmRmICU+JQ0KICBtdXRhdGUoY2VuYS5venQuUExOID0gY2VuYSpvenQpDQpgYGANCiMjIyBDYW5hIHVuY2ppIHrFgm90YSB3IFVTRCAoKmNlbmEub3p0LlVTRCogY2VuYSB3ZWTFgnVnIGJpZcW8xIVjZWdvIGt1cnN1IGkgKmNlbmEub3p0LlVTRC45MyogY2VuYSB3ZWTFgnVnIGt1cnN1IHogZG5pYSB3eWNlbnkgesWCb3RhKS4NCmBgYHtyfQ0KZ29sZC45My5kZiA8LSBnb2xkLjkzLmRmICU+JQ0KICBtdXRhdGUoY2VuYS5venQuVVNEID0gY2VuYS5venQuUExOL1VTRC5jZW5hLA0KICAgICAgICAgY2VuYS5venQuVVNELjkzID0gY2VuYS5venQuUExOL1VTRC5jZW5hLjkzKQ0KYGBgDQojIyMgV3lrcmVzIHptaWFuIGNlbiB6xYJvdGEuDQpgYGB7cn0NCmdvbGQuOTMuZGYgJT4lIGdncGxvdChhZXMoeCA9IGRhdGEsIHkgPSBjZW5hKSkgKw0KICBnZW9tX3BvaW50KGNvbG9yID0gImdvbGQiKSArDQogIGdlb21fbGluZShhZXMoeCA9IGRhdGEsIHkgPSBjZW5hKSwgc3RhdD0iaWRlbnRpdHkiLCBjb2xvciA9ICJnb2xkMyIpKw0KICBsYWJzKHRpdGxlID0gIktzenRhxYJ0b3dhbmllIHNpxJkgY2VueSB6xYJvdGEgdyBOQlAgbyBva3Jlc2llIG9zdGF0bmljaCA5MyBkbmkiLA0KICAgICAgIHggPSAiRGF0YSIsDQogICAgICAgeSA9ICJDZW5hIFtQTE4vZ10iLA0KICAgICAgIGNhcHRpb24gPSAiT3ByYWNvd2FuaWUgd8WCYXNuZSBuYSBwb2RzdGF3aWUgZGFueWNoIE5CUC4iKSArDQogIHRoZW1lKHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoaGp1c3Q9MC41KSkNCmBgYA0KDQojIyBXYWx1dHkNCg0KIyMjIFBvYmllcmFuaWUgYmllxbzEhWNlZ28ga3Vyc3UgKmV1cm8qDQpgYGB7cn0NCndhbHV0YV9FVVIgPC0gZ2V0X2N1cnJlbnRfZXhjaGFuZ2VyYXRlKCJBIiwgIkVVUiIpDQpgYGANCg0KIyMjIyBDbyB3xYJhxZtjaXdpZSB6b3N0YcWCbyBwb2JyYW5lLg0KYGBge3J9DQp3YWx1dGFfRVVSICU+JSBjbGFzcygpDQp3YWx1dGFfRVVSICU+JSBsZW5ndGgoKQ0Kd2FsdXRhX0VVUiAlPiUgbmFtZXMNCmBgYA0KDQpgYGB7cn0NCndhbHV0YV9FVVIkY29udGVudCAlPiUgbGVuZ3RoKCkNCndhbHV0YV9FVVIkY29udGVudCAlPiUgbmFtZXMNCmBgYA0KDQpgYGB7cn0NCih3YWx1dGFfRVVSJGNvbnRlbnQpJHJhdGVzICU+JSBjbGFzcw0KKHdhbHV0YV9FVVIkY29udGVudCkkcmF0ZXMgJT4lIGRpbQ0KYGBgDQoNCmBgYHtyfQ0KKHdhbHV0YV9FVVIkY29udGVudCkkcmF0ZXMNCmBgYA0KVHV0YWogb3N0YXRlY3pueSBrdXJzIMWbcmVkbmkgKmV1cm8qDQpgYGB7cn0NCg0KKCh3YWx1dGFfRVVSJGNvbnRlbnQpJHJhdGVzKSRtaWQNCmBgYA0KDQojIyMjIEphayB0byB6cm9iacSHIGluYWN6ZWogcHJ6eSBwb21vY3kgb3BlcmF0b3JhIG9kd2/FgmFuaWEgZG8gbi10ZWdvIGVsZW1lbnR1IGxpc3R5ICoqW1tuXV0qKg0KYGBge3J9DQooKHdhbHV0YV9FVVJbWzFdXSlbWzRdXSlbWzNdXQ0KYGBgDQoNCiMjIyMgTW/FvG5hIHRvIG1pZXN6YcSHDQpgYGB7cn0NCg0KKHdhbHV0YV9FVVIkY29udGVudClbWzRdXQ0KYGBgDQoNCmBgYHtyfQ0KKCh3YWx1dGFfRVVSJGNvbnRlbnQpW1s0XV0pW1szXV0NCmBgYA0KYGBge3J9DQoNCigod2FsdXRhX0VVUiRjb250ZW50KVtbNF1dKSRtaWQNCmBgYA0KDQojIyMgUG9iaWVyYW5pZSAqbiogb3N0YXRuaWNoIGt1cnPDs3cgd2FsdXR5DQpgYGB7cn0NCndhbHV0YV9FVVIuOTMgPC0gZ2V0X2xhc3Rfbl9leGNoYW5nZXJhdGVzKCJBIiwgIkVVUiIsIDkzKQ0KKHdhbHV0YV9FVVIuOTMkY29udGVudCkkcmF0ZQ0KYGBgDQoNCiMjIyBXeWtvbmFuaWUgcnlzdW5rdSB6bWlhbiBrdXJzdSAqZXVybyogdyBva3Jlc2llIG9zdGF0bmljaCA5MyBkbmkuDQpgYGB7cn0NCih3YWx1dGFfRVVSLjkzJGNvbnRlbnQpJHJhdGUgJT4lIA0KICBnZ3Bsb3QoYWVzKHggPSBlZmZlY3RpdmVEYXRlLCB5ID0gbWlkKSkgKw0KICBnZW9tX3BvaW50KGNvbG9yID0gImJsdWUiKSArDQogIGdlb21fbGluZShhZXMoeCA9IGVmZmVjdGl2ZURhdGUsIHkgPSBtaWQpLCBzdGF0PSJpZGVudGl0eSIsIGNvbG9yID0gImJsdWUiKSsNCiAgbGFicyh0aXRsZSA9ICJLc3p0YcWCdG93YW5pZSBzacSZIGNlbnkgRXVybyB3IE5CUCBvIG9rcmVzaWUgb3N0YXRuaWNoIDkzIGRuaSIsDQogICAgICAgeCA9ICJEYXRhIiwNCiAgICAgICB5ID0gIkNlbmEgZXVybyBbUExOXSIsDQogICAgICAgY2FwdGlvbiA9ICJPcHJhY293YW5pZSB3xYJhc25lIG5hIHBvZHN0YXdpZSBkYW55Y2ggTkJQLiIpICsNCiAgdGhlbWUocGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChoanVzdD0wLjUpKQ0KYGBgDQoNCiMgUHJhY2EgZG9tb3dhDQoNCjEuIFdlxbogdHJ6eSB3YWx1dHkgKEdCUCwgVVNELCBKUFkpLCBwb2JpZXJ6IGRhbmUgeiBvc3RhdG5pY2ggOTMgZG5pLCBzdHfDs3J6IHJhbWvEmSBkYW55Y2ggendpZXJhasSFY8SFIGRhdHksIGkga3Vyc3kgdHljaCB3YWx1dCwgbmFyeXN1aiBuYSBqZWRueW0gd3lrcmVzaWUgem1pZW7EmSBpY2gga3Vyc3UuIA0KMi4gRGxhIHrFgm90YSBuYXJ5c3VqIHd5a3JlcyB6bWlhbiBjZW55IHcgY2nEhWd1IG9zdGF0bmljaCA5MyBkbmksIHogdHltIG1hasSFIGJ5xIcgZHdpZSBvc2kgWSAobmEgcHJhd3ltIGkgbGV3eW0ga2/FhGN1IG9ic3phcnUgcnlzdW5rdSkgbmEgbGV3eW0gYnJ6ZWd1IG1hIGJ5xIcgY2VuYSB3IFBMTiwgYSBuYSBwcmF3eW0gdyBVU0QuIA==