Task 1

First, we load the data

data(CreditCard)

CreditCard <- CreditCard %>% 
  filter(months != 0, card=="yes") %>% 
  mutate(expenses = expenditure / months)

# Create the frequency table
tabela <- Freq(CreditCard$expenses, breaks=seq(0, 500, by=50), na.include = TRUE)

kable(tabela, 
      col.names = c("Avg expen/mth", "Frequency", "Percentage %", "Cumulative frequency", "Cumulative percentage %")) %>%
  kable_styling(bootstrap_options = "striped") %>%
  column_spec(c(3, 5), background = "cornsilk", color="navy")%>%
  column_spec(c(2, 4), background = "navy", color="cornsilk")%>%
  kable_classic(full_width = FALSE, html_font = "Verdana")
Avg expen/mth Frequency Percentage % Cumulative frequency Cumulative percentage %
[0,50] 937 0.9168297 937 0.9168297
(50,100] 44 0.0430528 981 0.9598826
(100,150] 14 0.0136986 995 0.9735812
(150,200] 12 0.0117417 1007 0.9853229
(200,250] 8 0.0078278 1015 0.9931507
(250,300] 1 0.0009785 1016 0.9941292
(300,350] 0 0.0000000 1016 0.9941292
(350,400] 1 0.0009785 1017 0.9951076
(400,450] 1 0.0009785 1018 0.9960861
(450,500] 4 0.0039139 1022 1.0000000
tabela <- classIntervals(CreditCard$expenses, n=7, style="fixed", fixedBreaks=seq(0,500,by=50))
jenks.tests(tabela)
##        # classes  Goodness of fit Tabular accuracy 
##       10.0000000        0.9490873        0.6426857

Task 2.1

First let’s load the data

download.file("https://raw.githubusercontent.com/kflisikowski/ds/master/netflix-dataset.csv?raw=true", destfile ="dane.csv",mode="wb")
mydata<-read.csv(file="dane.csv",encoding ="UTF-8",header=TRUE,sep = ",")
attach(mydata)

We will consider a movie or series to be polish if it is available in Poland and has Polish subtitles. Now some data wrangling.

movies <- mydata %>% 
  filter(Languages == "Polish")%>%
  filter(Country.Availability == "Poland") %>%
  select( Country.Availability,Languages, Title, IMDb.Score )
ggplot(mydata, aes(IMDb.Score))+
  geom_histogram(binwidth=0.1, fill = "cornsilk", color="navyblue")+
  facet_wrap(vars(Series.or.Movie))

Task 2.2

Now let’s take a look at density.

ggplot(mydata, aes(IMDb.Score), y=after_stat(density), bw=0.5)+
  geom_density( fill = "cornsilk", color="navyblue")+
  facet_wrap(vars(Series.or.Movie))

Task 3.3

new <- mydata %>%
  select(Languages) %>%
  separate_rows(Languages, sep=", ") %>%
  count(Languages, sort=TRUE) %>%
  top_n(10, n)


ggplot(new, aes(x=n, y=fct_reorder(Languages, n)))+
  geom_col()+
  ylab("Language")+
  xlab("How many titles available")

Extra task 1

#Create a chart showing actors starring in the most popular productions.
top_productions<-mydata%>%
  arrange(-IMDb.Votes)%>%
  slice_head(n=50)%>%
  select(Title, Actors)

actors_general<-top_productions%>%
  separate_rows(Actors, sep=", " )%>%
  select(Actors)

top_actors<-actors_general%>%
  count(Actors)%>%
  arrange(-n)%>%
  slice_head(n=10)

top_actors%>%
ggplot(aes(x = Actors, y = n, fill = Actors)) +  
  geom_col(width = 0.7, color = "black") +         
  ylab("Number of Appearances") +
  xlab("Actors") +
  theme_minimal() +                             
  theme(axis.text.x = element_text(angle = 45, hjust = 1, vjust = 1)) +  
  facet_wrap(vars("Top 10 actors starring in the most popular productions(50)"), scales="free")+
  scale_fill_brewer(palette = "Set3")          

Extra task 2

newdata <-mydata %>%
  select(IMDb.Score, Metacritic.Score, Rotten.Tomatoes.Score, Hidden.Gem.Score, Series.or.Movie) %>%

  pivot_longer(cols=c("IMDb.Score", "Metacritic.Score", "Rotten.Tomatoes.Score", "Hidden.Gem.Score"), names_to="Reviewer", values_to="Rating" )
newdata
## # A tibble: 37,700 × 3
##    Series.or.Movie Reviewer              Rating
##    <chr>           <chr>                  <dbl>
##  1 Series          IMDb.Score               7.9
##  2 Series          Metacritic.Score        82  
##  3 Series          Rotten.Tomatoes.Score   98  
##  4 Series          Hidden.Gem.Score         4.3
##  5 Movie           IMDb.Score               5.8
##  6 Movie           Metacritic.Score        69  
##  7 Movie           Rotten.Tomatoes.Score   79  
##  8 Movie           Hidden.Gem.Score         7  
##  9 Movie           IMDb.Score               7.4
## 10 Movie           Metacritic.Score        NA  
## # ℹ 37,690 more rows
ggplot(newdata, aes(x=Rating))+
  geom_histogram()+
  facet_wrap(vars(Reviewer, Series.or.Movie), scales="free")
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

LS0tDQp0aXRsZTogIkRhdGEgVmlzdWFsaXphdGlvbiINCmF1dGhvcjogIkdyb3VwOiBNYWNpZWogS2Fyd2lrLCBOYXRhbGlhIFNhcmJpZXdza2EsIE1hcmNpbiBTdWNodG8sIFpoYW5nIEhhb2thbmciDQpvdXRwdXQ6DQogIGh0bWxfZG9jdW1lbnQ6IA0KICAgIHRoZW1lOiBjZXJ1bGVhbg0KICAgIGhpZ2hsaWdodDogdGV4dG1hdGUNCiAgICBmb250c2l6ZTogOHB0DQogICAgdG9jOiB5ZXMNCiAgICBjb2RlX2Rvd25sb2FkOiB5ZXMNCiAgICB0b2NfZmxvYXQ6DQogICAgICBjb2xsYXBzZWQ6IG5vDQogICAgZGZfcHJpbnQ6IGRlZmF1bHQNCiAgICB0b2NfZGVwdGg6IDUNCmVkaXRvcl9vcHRpb25zOg0KICBtYXJrZG93bjogDQogICAgd3JhcDogNzINCiAgY2h1bmtfb3V0cHV0X3R5cGU6IGlubGluZQ0KLS0tDQoNCmBgYHtyLCBpbmNsdWRlPUZBTFNFfQ0KI2xvYWQgbGlicmFyeSBhbmQgc2V0IHNlZWQNCmxpYnJhcnkoZHBseXIpDQpsaWJyYXJ5KHRpZHl2ZXJzZSkNCmxpYnJhcnkoZ2dwbG90MikNCmxpYnJhcnkoa2FibGVFeHRyYSkNCmxpYnJhcnkoc3RyaW5ncikNCmxpYnJhcnkoQUVSKQ0KbGlicmFyeShwYW5kb2MpDQpsaWJyYXJ5KGZyZXF1ZW5jeSkNCmxpYnJhcnkoY2xhc3NJbnQpDQpsaWJyYXJ5KERlc2NUb29scykNCnNldC5zZWVkKDIxKQ0KDQpgYGANCg0KIyMgVGFzayAxDQoNCkZpcnN0LCB3ZSBsb2FkIHRoZSBkYXRhDQoNCmBgYHtyIExvYWR9DQpkYXRhKENyZWRpdENhcmQpDQoNCkNyZWRpdENhcmQgPC0gQ3JlZGl0Q2FyZCAlPiUgDQogIGZpbHRlcihtb250aHMgIT0gMCwgY2FyZD09InllcyIpICU+JSANCiAgbXV0YXRlKGV4cGVuc2VzID0gZXhwZW5kaXR1cmUgLyBtb250aHMpDQoNCiMgQ3JlYXRlIHRoZSBmcmVxdWVuY3kgdGFibGUNCnRhYmVsYSA8LSBGcmVxKENyZWRpdENhcmQkZXhwZW5zZXMsIGJyZWFrcz1zZXEoMCwgNTAwLCBieT01MCksIG5hLmluY2x1ZGUgPSBUUlVFKQ0KDQprYWJsZSh0YWJlbGEsIA0KICAgICAgY29sLm5hbWVzID0gYygiQXZnIGV4cGVuL210aCIsICJGcmVxdWVuY3kiLCAiUGVyY2VudGFnZSAlIiwgIkN1bXVsYXRpdmUgZnJlcXVlbmN5IiwgIkN1bXVsYXRpdmUgcGVyY2VudGFnZSAlIikpICU+JQ0KICBrYWJsZV9zdHlsaW5nKGJvb3RzdHJhcF9vcHRpb25zID0gInN0cmlwZWQiKSAlPiUNCiAgY29sdW1uX3NwZWMoYygzLCA1KSwgYmFja2dyb3VuZCA9ICJjb3Juc2lsayIsIGNvbG9yPSJuYXZ5IiklPiUNCiAgY29sdW1uX3NwZWMoYygyLCA0KSwgYmFja2dyb3VuZCA9ICJuYXZ5IiwgY29sb3I9ImNvcm5zaWxrIiklPiUNCiAga2FibGVfY2xhc3NpYyhmdWxsX3dpZHRoID0gRkFMU0UsIGh0bWxfZm9udCA9ICJWZXJkYW5hIikNCg0KdGFiZWxhIDwtIGNsYXNzSW50ZXJ2YWxzKENyZWRpdENhcmQkZXhwZW5zZXMsIG49Nywgc3R5bGU9ImZpeGVkIiwgZml4ZWRCcmVha3M9c2VxKDAsNTAwLGJ5PTUwKSkNCmplbmtzLnRlc3RzKHRhYmVsYSkNCg0KYGBgDQoNCg0KIyMgVGFzayAyLjENCg0KRmlyc3QgbGV0J3MgbG9hZCB0aGUgZGF0YQ0KDQpgYGB7ciBleDIsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0UsIGluY2x1ZGU9VFJVRX0NCmRvd25sb2FkLmZpbGUoImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9rZmxpc2lrb3dza2kvZHMvbWFzdGVyL25ldGZsaXgtZGF0YXNldC5jc3Y/cmF3PXRydWUiLCBkZXN0ZmlsZSA9ImRhbmUuY3N2Iixtb2RlPSJ3YiIpDQpteWRhdGE8LXJlYWQuY3N2KGZpbGU9ImRhbmUuY3N2IixlbmNvZGluZyA9IlVURi04IixoZWFkZXI9VFJVRSxzZXAgPSAiLCIpDQphdHRhY2gobXlkYXRhKQ0KYGBgDQoNCldlIHdpbGwgY29uc2lkZXIgYSBtb3ZpZSBvciBzZXJpZXMgdG8gYmUgcG9saXNoIGlmIGl0IGlzIGF2YWlsYWJsZSBpbg0KUG9sYW5kIGFuZCBoYXMgUG9saXNoIHN1YnRpdGxlcy4gTm93IHNvbWUgZGF0YSB3cmFuZ2xpbmcuDQoNCmBgYHtyLCAgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0NCm1vdmllcyA8LSBteWRhdGEgJT4lIA0KICBmaWx0ZXIoTGFuZ3VhZ2VzID09ICJQb2xpc2giKSU+JQ0KICBmaWx0ZXIoQ291bnRyeS5BdmFpbGFiaWxpdHkgPT0gIlBvbGFuZCIpICU+JQ0KICBzZWxlY3QoIENvdW50cnkuQXZhaWxhYmlsaXR5LExhbmd1YWdlcywgVGl0bGUsIElNRGIuU2NvcmUgKQ0KYGBgDQoNCmBgYHtyLCB3YXJuaW5nPUZBTFNFfQ0KZ2dwbG90KG15ZGF0YSwgYWVzKElNRGIuU2NvcmUpKSsNCiAgZ2VvbV9oaXN0b2dyYW0oYmlud2lkdGg9MC4xLCBmaWxsID0gImNvcm5zaWxrIiwgY29sb3I9Im5hdnlibHVlIikrDQogIGZhY2V0X3dyYXAodmFycyhTZXJpZXMub3IuTW92aWUpKQ0KYGBgDQoNCiMjIFRhc2sgMi4yDQoNCk5vdyBsZXQncyB0YWtlIGEgbG9vayBhdCBkZW5zaXR5Lg0KDQpgYGB7ciwgd2FybmluZz1GQUxTRX0NCmdncGxvdChteWRhdGEsIGFlcyhJTURiLlNjb3JlKSwgeT1hZnRlcl9zdGF0KGRlbnNpdHkpLCBidz0wLjUpKw0KICBnZW9tX2RlbnNpdHkoIGZpbGwgPSAiY29ybnNpbGsiLCBjb2xvcj0ibmF2eWJsdWUiKSsNCiAgZmFjZXRfd3JhcCh2YXJzKFNlcmllcy5vci5Nb3ZpZSkpDQoNCmBgYA0KDQojIyBUYXNrIDMuMw0KDQpgYGB7cn0NCm5ldyA8LSBteWRhdGEgJT4lDQogIHNlbGVjdChMYW5ndWFnZXMpICU+JQ0KICBzZXBhcmF0ZV9yb3dzKExhbmd1YWdlcywgc2VwPSIsICIpICU+JQ0KICBjb3VudChMYW5ndWFnZXMsIHNvcnQ9VFJVRSkgJT4lDQogIHRvcF9uKDEwLCBuKQ0KDQoNCmdncGxvdChuZXcsIGFlcyh4PW4sIHk9ZmN0X3Jlb3JkZXIoTGFuZ3VhZ2VzLCBuKSkpKw0KICBnZW9tX2NvbCgpKw0KICB5bGFiKCJMYW5ndWFnZSIpKw0KICB4bGFiKCJIb3cgbWFueSB0aXRsZXMgYXZhaWxhYmxlIikNCg0KYGBgDQoNCiMjIEV4dHJhIHRhc2sgMQ0KYGBge3J9DQojQ3JlYXRlIGEgY2hhcnQgc2hvd2luZyBhY3RvcnMgc3RhcnJpbmcgaW4gdGhlIG1vc3QgcG9wdWxhciBwcm9kdWN0aW9ucy4NCnRvcF9wcm9kdWN0aW9uczwtbXlkYXRhJT4lDQogIGFycmFuZ2UoLUlNRGIuVm90ZXMpJT4lDQogIHNsaWNlX2hlYWQobj01MCklPiUNCiAgc2VsZWN0KFRpdGxlLCBBY3RvcnMpDQoNCmFjdG9yc19nZW5lcmFsPC10b3BfcHJvZHVjdGlvbnMlPiUNCiAgc2VwYXJhdGVfcm93cyhBY3RvcnMsIHNlcD0iLCAiICklPiUNCiAgc2VsZWN0KEFjdG9ycykNCg0KdG9wX2FjdG9yczwtYWN0b3JzX2dlbmVyYWwlPiUNCiAgY291bnQoQWN0b3JzKSU+JQ0KICBhcnJhbmdlKC1uKSU+JQ0KICBzbGljZV9oZWFkKG49MTApDQoNCnRvcF9hY3RvcnMlPiUNCmdncGxvdChhZXMoeCA9IEFjdG9ycywgeSA9IG4sIGZpbGwgPSBBY3RvcnMpKSArICANCiAgZ2VvbV9jb2wod2lkdGggPSAwLjcsIGNvbG9yID0gImJsYWNrIikgKyAgICAgICAgIA0KICB5bGFiKCJOdW1iZXIgb2YgQXBwZWFyYW5jZXMiKSArDQogIHhsYWIoIkFjdG9ycyIpICsNCiAgdGhlbWVfbWluaW1hbCgpICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDQ1LCBoanVzdCA9IDEsIHZqdXN0ID0gMSkpICsgIA0KICBmYWNldF93cmFwKHZhcnMoIlRvcCAxMCBhY3RvcnMgc3RhcnJpbmcgaW4gdGhlIG1vc3QgcG9wdWxhciBwcm9kdWN0aW9ucyg1MCkiKSwgc2NhbGVzPSJmcmVlIikrDQogIHNjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGUgPSAiU2V0MyIpICAgICAgICAgIA0KDQpgYGANCg0KIyMgRXh0cmEgdGFzayAyDQpgYGB7ciwgd2FybmluZz1GQUxTRX0NCm5ld2RhdGEgPC1teWRhdGEgJT4lDQogIHNlbGVjdChJTURiLlNjb3JlLCBNZXRhY3JpdGljLlNjb3JlLCBSb3R0ZW4uVG9tYXRvZXMuU2NvcmUsIEhpZGRlbi5HZW0uU2NvcmUsIFNlcmllcy5vci5Nb3ZpZSkgJT4lDQoNCiAgcGl2b3RfbG9uZ2VyKGNvbHM9YygiSU1EYi5TY29yZSIsICJNZXRhY3JpdGljLlNjb3JlIiwgIlJvdHRlbi5Ub21hdG9lcy5TY29yZSIsICJIaWRkZW4uR2VtLlNjb3JlIiksIG5hbWVzX3RvPSJSZXZpZXdlciIsIHZhbHVlc190bz0iUmF0aW5nIiApDQpuZXdkYXRhDQoNCmdncGxvdChuZXdkYXRhLCBhZXMoeD1SYXRpbmcpKSsNCiAgZ2VvbV9oaXN0b2dyYW0oKSsNCiAgZmFjZXRfd3JhcCh2YXJzKFJldmlld2VyLCBTZXJpZXMub3IuTW92aWUpLCBzY2FsZXM9ImZyZWUiKQ0KDQogIA0KYGBgDQo=