{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "provenance": []
    },
    "kernelspec": {
      "name": "ir",
      "display_name": "R"
    },
    "language_info": {
      "name": "R"
    }
  },
  "cells": [
    {
      "cell_type": "markdown",
      "source": [
        "# Air Quality Data Processing with R\n",
        "\n",
        "Air Quality Open Data Platform and World Air Quality Index project team provides a [new dedicated dataset](https://aqicn.org/data-platform/covid19/), updated 3 times a day, and covering about 380 major cities in the world, from January 2015 until now. The data for each major city is based on the average (median) of several air quality monitoring stations. The data set provides min, max, median and standard deviation for each of the air pollutant species (PM10, PM2.5, NO2, Ozone, SO2, CO) as well as meteorological data (Temperature, Humidity, Wind).\n",
        "\n",
        "R code below downloads several .csv files, combines thems into a full dataset, selects median from provided statistics and narrows a set of countries to European Union members. From available information only meteorological data on Temperature and Humidity is selected and THI (Temperature Humidity Index) is calculated. Finally, daily THI time series for a selected city is summarized and visualized.\n",
        "\n",
        "THI measures the level of discomfort the average person (or animal) is thought to experience as a result of the combined effects of the temperature and humidity of the air. The heat stress index THI is a simple combination of temperature and humidity (in decimal form) and can be calculated by the following formula:\n",
        "\n",
        "$THI = 0.8 \\times Temperature + Humidity \\times (Temperature - 14.4) + 46.4$\n",
        "\n",
        "Habeeb, A. A., Gad, A. E., & Atta, M. A. (2018). Temperature-humidity indices as indicators to heat stress of climatic conditions with relation to production and reproduction of farm animals. *International Journal of Biotechnology and Recent Advances*, 1(1), 35-50. [https://doi.org/10.18689/ijbr-1000107](https://doi.org/10.18689/ijbr-1000107)"
      ],
      "metadata": {
        "id": "IaS3QAbROsuw"
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "## 1. Prepare R environment"
      ],
      "metadata": {
        "id": "np80odBBOyLG"
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "**Assistant:** These are descriptions of the required R libraries.\n",
        "* `dplyr` is an R library that provides a set of functions for data manipulation and transformation. It is part of the larger \"tidyverse\" ecosystem of R libraries and is widely used for tasks such as filtering, sorting, selecting, summarizing, and mutating data. `dplyr`'s functions are designed to work with data frames or data tables, making data manipulation tasks more intuitive and efficient.\n",
        "* `tidyr` is an R library that is part of the tidyverse ecosystem, and it is primarily used for data tidying and reshaping. Data tidying is the process of organizing and structuring data to make it more suitable for analysis and visualization. tidyr provides functions to convert data between \"wide\" and \"long\" formats, separate and unite columns, and handle missing or messy data.\n",
        "* `ggplot2` is a popular R library for creating high-quality and customizable data visualizations and graphs. It is based on the Grammar of Graphics, which is a framework for describing and building complex plots using simple components. `ggplot2` allows users to create a wide range of graphical visualizations, from simple scatter plots to complex, multi-layered plots with facets, color mapping, and more.\n",
        "* `httr` is an R library for working with HTTP requests. It provides a set of functions that allow you to make HTTP requests, interact with web APIs, and handle responses. The library is designed to simplify the process of sending and receiving data over the web.\n",
        "* `data.table` is an R library that provides an efficient and fast way to manipulate large data sets. It is particularly well-suited for tasks involving data aggregation, subsetting, joining, and transformation. The library extends the basic data.frame object in R.\n",
        "* `dtplyr` is an R library that extends the capabilities of the `dplyr` library to work with large data sets efficiently using the data.table framework. It combines the syntax and functionality of `dplyr` with the speed and memory efficiency of `data.table`. This allows users to perform data manipulation operations on large data sets in a manner similar to using `dplyr`, making it easier to work with big data in R.\n",
        "* `xts` (eXtensible Time Series) is an R library that provides a specialized data structure for working with time series data. It builds upon the fundamental data structure in R, data frames, and enhances it to handle time-ordered data more efficiently.\n",
        "* `eurostat` library in R is a tool for accessing and retrieving statistical data from Eurostat, the statistical office of the European Union.\n",
        "* `pals` is an R library with a comprehensive collection of color palettes, colormaps, and tools to evaluate them.\n",
        "* `pbapply` library in R can be used for parallel processing to apply functions in parallel to elements of a list or vector. This can significantly speed up the execution of functions, especially when dealing with computationally intensive tasks on multiple processor cores or clusters for parallel computation.\n",
        "* `doParallel` library in R provides a parallel backend for the popular \"foreach\" library. It allows R users to easily parallelize operations, such as loops and repetitive tasks, across multiple processor cores or even clusters of computers. This can significantly speed up data processing and computation-intensive tasks."
      ],
      "metadata": {
        "id": "iDjPkUrSO0JD"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "# Install / load required R libraries\n",
        "if (!\"pacman\" %in% rownames(installed.packages())) install.packages(\"pacman\")\n",
        "pacman::p_load(dplyr, tidyr, ggplot2) # required subset of tidyverse packages\n",
        "pacman::p_load(httr, data.table, dtplyr, xts, eurostat, pals, pbapply, doParallel)\n",
        "euCodes <- eurostat::harmonize_country_code(eurostat::eu_countries$code)\n",
        "pbapply::pboptions(type = \"txt\", style = 3)\n",
        "cpuCores <- parallel::detectCores()\n",
        "cl <- parallel::makeCluster(cpuCores)\n",
        "doParallel::registerDoParallel(cl)"
      ],
      "metadata": {
        "id": "Ezlvt64yO4Fm",
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "outputId": "ae8ff7a6-62ba-44e3-dbe6-ac14a7db7b8c"
      },
      "execution_count": 1,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stderr",
          "text": [
            "Installing package into ‘/usr/local/lib/R/site-library’\n",
            "(as ‘lib’ is unspecified)\n",
            "\n",
            "Installing package into ‘/usr/local/lib/R/site-library’\n",
            "(as ‘lib’ is unspecified)\n",
            "\n",
            "also installing the dependency ‘zoo’\n",
            "\n",
            "\n",
            "\n",
            "xts installed\n",
            "\n",
            "Installing package into ‘/usr/local/lib/R/site-library’\n",
            "(as ‘lib’ is unspecified)\n",
            "\n",
            "also installing the dependencies ‘proxy’, ‘Rcpp’, ‘e1071’, ‘plyr’, ‘bibtex’, ‘assertthat’, ‘here’, ‘classInt’, ‘countrycode’, ‘ISOweek’, ‘RefManageR’, ‘regions’\n",
            "\n",
            "\n",
            "\n",
            "eurostat installed\n",
            "\n",
            "Installing package into ‘/usr/local/lib/R/site-library’\n",
            "(as ‘lib’ is unspecified)\n",
            "\n",
            "also installing the dependencies ‘dichromat’, ‘mapproj’, ‘maps’\n",
            "\n",
            "\n",
            "\n",
            "pals installed\n",
            "\n",
            "Installing package into ‘/usr/local/lib/R/site-library’\n",
            "(as ‘lib’ is unspecified)\n",
            "\n",
            "\n",
            "pbapply installed\n",
            "\n",
            "Installing package into ‘/usr/local/lib/R/site-library’\n",
            "(as ‘lib’ is unspecified)\n",
            "\n",
            "also installing the dependencies ‘foreach’, ‘iterators’\n",
            "\n",
            "\n",
            "\n",
            "doParallel installed\n",
            "\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "## 2. Download data files"
      ],
      "metadata": {
        "id": "c9Hq21nHPJea"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "# Function to download remote file to the disk\n",
        "urlDownload <- function(urlLink, showProgress = FALSE) {\n",
        "  urlHead <- curlGetHeaders(urlLink)\n",
        "  fileSize <- as.numeric(gsub(\"^.*content-length: ([0-9]+).*$\", \"\\\\1\", tolower(urlHead[5])))\n",
        "  fileName <- gsub(\"^.*filename=(.*)\\r\\n$\", \"\\\\1\", urlHead[grepl('filename', urlHead)])\n",
        "  if (!file.exists(fileName) || file.info(fileName)$size != fileSize) {\n",
        "    if (showProgress) {\n",
        "      message(sprintf('Downloading %s', fileName))\n",
        "      httr::GET(urlLink, httr::write_disk(fileName, overwrite = TRUE), httr::progress())\n",
        "      cat('\\n')\n",
        "    } else {\n",
        "      httr::GET(urlLink, httr::write_disk(fileName, overwrite = TRUE))\n",
        "    }\n",
        "  }\n",
        "  return(fileName)\n",
        "}"
      ],
      "metadata": {
        "id": "0uRSZiI8lyM9"
      },
      "execution_count": 2,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "source": [
        "**Assistant:**  This is an R function named `urlDownload` that downloads a remote file to the disk. The function takes two arguments: `urlLink` and `showProgress`.\n",
        "\n",
        "`urlLink` is the URL of the remote file to be downloaded.\n",
        "\n",
        "`showProgress` is a logical value that determines whether to show the progress of the download. If `showProgress` is `TRUE`, the function will display a message indicating that it is downloading the file, and it will also display the progress of the download using the `httr::progress()` function. If `showProgress` is `FALSE`, the function will not display any progress messages or indicators.\n",
        "\n",
        "The function first uses the `curlGetHeaders()` function to retrieve the headers of the remote file. It then extracts the file size and the file name from the headers using regular expressions.\n",
        "\n",
        "Next, the function checks if the file already exists on the disk and if its size matches the file size in the headers. If the file does not exist or its size does not match, the function downloads the file using the `httr::GET()` function. If `showProgress` is `TRUE`, the function will also display the progress of the download using the `httr::progress()` function.\n",
        "\n",
        "Finally, the function returns the file name of the downloaded file."
      ],
      "metadata": {
        "id": "CBjaZd8dPKWS"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "# Download the newest data\n",
        "urlLocation <- 'https://aqicn.org/data-platform/covid19/report/39374-7694ec07/'\n",
        "csvFile <- urlDownload(urlLocation, showProgress = TRUE)\n",
        "csvFile"
      ],
      "metadata": {
        "id": "jQRg_qKlltun",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 107
        },
        "outputId": "9a2b84d8-e3ca-4f38-b4a4-185aef8a9b67"
      },
      "execution_count": 3,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stderr",
          "text": [
            "Downloading waqi-covid19-airqualitydata-2024.csv\n",
            "\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "  |======================================================================| 100%\n",
            "\n"
          ]
        },
        {
          "output_type": "display_data",
          "data": {
            "text/html": [
              "'waqi-covid19-airqualitydata-2024.csv'"
            ],
            "text/markdown": "'waqi-covid19-airqualitydata-2024.csv'",
            "text/latex": "'waqi-covid19-airqualitydata-2024.csv'",
            "text/plain": [
              "[1] \"waqi-covid19-airqualitydata-2024.csv\""
            ]
          },
          "metadata": {}
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "**Assistant:**  This R language code is downloading a CSV file from a URL using the `urlDownload()` function.\n",
        "\n",
        "Here's a breakdown of the code:\n",
        "\n",
        "1. `urlLocation <- 'https://aqicn.org/data-platform/covid19/report/39374-7694ec07/'` - This line sets the URL of the CSV file to be downloaded.\n",
        "2. `csvFile <- urlDownload(urlLocation, showProgress = TRUE)` - This line downloads the CSV file from the specified URL and stores it in a variable called `csvFile`. The `showProgress` argument is set to `TRUE`, which means that the progress of the download will be displayed in the console.\n",
        "\n",
        "Overall, this code is used to download a CSV file from a URL and store it in a variable for further processing or analysis."
      ],
      "metadata": {
        "id": "2KIsQLphl8Qq"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "# Create lists of year and quarter names\n",
        "yNames <- as.character(2019:2023)\n",
        "qNames <- paste0(\"Q\", 1:4)\n",
        "\n",
        "# Create a data frame with the url locations and year/quarter combinations\n",
        "# Combine url location and year/quarter combinations into a single column\n",
        "DF <- data.frame(urlLocation, crossing(yNames, qNames)) %>%\n",
        "  unite(urlLocations, c(urlLocation, \"yNames\", \"qNames\"), sep=\"\")\n",
        "print(DF)"
      ],
      "metadata": {
        "id": "oEBkBw0ul-dg",
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "outputId": "91865fa2-e5f6-47a8-e503-2d575a97aa76"
      },
      "execution_count": 4,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "                                                           urlLocations\n",
            "1  https://aqicn.org/data-platform/covid19/report/39374-7694ec07/2019Q1\n",
            "2  https://aqicn.org/data-platform/covid19/report/39374-7694ec07/2019Q2\n",
            "3  https://aqicn.org/data-platform/covid19/report/39374-7694ec07/2019Q3\n",
            "4  https://aqicn.org/data-platform/covid19/report/39374-7694ec07/2019Q4\n",
            "5  https://aqicn.org/data-platform/covid19/report/39374-7694ec07/2020Q1\n",
            "6  https://aqicn.org/data-platform/covid19/report/39374-7694ec07/2020Q2\n",
            "7  https://aqicn.org/data-platform/covid19/report/39374-7694ec07/2020Q3\n",
            "8  https://aqicn.org/data-platform/covid19/report/39374-7694ec07/2020Q4\n",
            "9  https://aqicn.org/data-platform/covid19/report/39374-7694ec07/2021Q1\n",
            "10 https://aqicn.org/data-platform/covid19/report/39374-7694ec07/2021Q2\n",
            "11 https://aqicn.org/data-platform/covid19/report/39374-7694ec07/2021Q3\n",
            "12 https://aqicn.org/data-platform/covid19/report/39374-7694ec07/2021Q4\n",
            "13 https://aqicn.org/data-platform/covid19/report/39374-7694ec07/2022Q1\n",
            "14 https://aqicn.org/data-platform/covid19/report/39374-7694ec07/2022Q2\n",
            "15 https://aqicn.org/data-platform/covid19/report/39374-7694ec07/2022Q3\n",
            "16 https://aqicn.org/data-platform/covid19/report/39374-7694ec07/2022Q4\n",
            "17 https://aqicn.org/data-platform/covid19/report/39374-7694ec07/2023Q1\n",
            "18 https://aqicn.org/data-platform/covid19/report/39374-7694ec07/2023Q2\n",
            "19 https://aqicn.org/data-platform/covid19/report/39374-7694ec07/2023Q3\n",
            "20 https://aqicn.org/data-platform/covid19/report/39374-7694ec07/2023Q4\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "**Assistant:** This R code creates a data frame with the url locations and year/quarter combinations.\n",
        "\n",
        "Here's a breakdown of the code:\n",
        "\n",
        "1. `yNames <- as.character(2019:2021)`: This line creates a list of year names, starting from 2019 to 2021.\n",
        "2. `qNames <- paste0(\"Q\", 1:4)`: This line creates a list of quarter names, starting from \"Q1\" to \"Q4\".\n",
        "3. `DF <- data.frame(urlLocation, crossing(yNames, qNames))`: This line creates a data frame with the url locations and year/quarter combinations. The `crossing()` function is used to create all possible combinations of year and quarter names.\n",
        "4. `unite(urlLocations, c(urlLocation, \"yNames\", \"qNames\"), sep=\"\")`: This line combines the url location and year/quarter combinations into a single column. The `unite()` function is used to combine the columns, and the `sep=\"\"` argument is used to specify that the columns should be separated by an empty string.\n",
        "\n",
        "In summary, this code creates a data frame with the url locations and year/quarter combinations, and combines the url location and year/quarter combinations into a single column."
      ],
      "metadata": {
        "id": "HeFFCxsFmLnh"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "# Download legacy data (sequentially)\n",
        "csvFiles <- lapply(DF$urlLocations, function(x) urlDownload(x, showProgress = TRUE))"
      ],
      "metadata": {
        "id": "vFXQnkgnmOmg",
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "outputId": "7006b4be-dc3b-4d04-cee0-fc67d54900f9"
      },
      "execution_count": 5,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stderr",
          "text": [
            "Downloading waqi-covid19-airqualitydata-2019Q1.csv\n",
            "\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "  |======================================================================| 100%\n",
            "\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stderr",
          "text": [
            "Downloading waqi-covid19-airqualitydata-2019Q2.csv\n",
            "\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "  |======================================================================| 100%\n",
            "\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stderr",
          "text": [
            "Downloading waqi-covid19-airqualitydata-2019Q3.csv\n",
            "\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "  |======================================================================| 100%\n",
            "\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stderr",
          "text": [
            "Downloading waqi-covid19-airqualitydata-2019Q4.csv\n",
            "\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "  |======================================================================| 100%\n",
            "\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stderr",
          "text": [
            "Downloading waqi-covid19-airqualitydata-2020Q1.csv\n",
            "\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "  |======================================================================| 100%\n",
            "\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stderr",
          "text": [
            "Downloading waqi-covid19-airqualitydata-2020Q2.csv\n",
            "\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "  |======================================================================| 100%\n",
            "\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stderr",
          "text": [
            "Downloading waqi-covid19-airqualitydata-2020Q3.csv\n",
            "\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "  |======================================================================| 100%\n",
            "\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stderr",
          "text": [
            "Downloading waqi-covid19-airqualitydata-2020Q4.csv\n",
            "\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "  |======================================================================| 100%\n",
            "\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stderr",
          "text": [
            "Downloading waqi-covid19-airqualitydata-2021Q1.csv\n",
            "\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "  |======================================================================| 100%\n",
            "\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stderr",
          "text": [
            "Downloading waqi-covid19-airqualitydata-2021Q2.csv\n",
            "\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "  |======================================================================| 100%\n",
            "\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stderr",
          "text": [
            "Downloading waqi-covid19-airqualitydata-2021Q3.csv\n",
            "\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "  |======================================================================| 100%\n",
            "\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stderr",
          "text": [
            "Downloading waqi-covid19-airqualitydata-2021Q4.csv\n",
            "\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "  |======================================================================| 100%\n",
            "\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stderr",
          "text": [
            "Downloading waqi-covid19-airqualitydata-2022Q1.csv\n",
            "\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "  |======================================================================| 100%\n",
            "\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stderr",
          "text": [
            "Downloading waqi-covid19-airqualitydata-2022Q2.csv\n",
            "\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "  |======================================================================| 100%\n",
            "\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stderr",
          "text": [
            "Downloading waqi-covid19-airqualitydata-2022Q3.csv\n",
            "\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "  |======================================================================| 100%\n",
            "\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stderr",
          "text": [
            "Downloading waqi-covid19-airqualitydata-2022Q4.csv\n",
            "\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "  |======================================================================| 100%\n",
            "\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stderr",
          "text": [
            "Downloading waqi-covid19-airqualitydata-2023Q1.csv\n",
            "\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "  |======================================================================| 100%\n",
            "\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stderr",
          "text": [
            "Downloading waqi-covid19-airqualitydata-2023Q2.csv\n",
            "\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "  |======================================================================| 100%\n",
            "\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stderr",
          "text": [
            "Downloading waqi-covid19-airqualitydata-2023Q3.csv\n",
            "\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "  |======================================================================| 100%\n",
            "\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stderr",
          "text": [
            "Downloading waqi-covid19-airqualitydata-2023Q4.csv\n",
            "\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "  |======================================================================| 100%\n",
            "\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "**Assistant:** This R language code is using the `lapply()` function to download a series of CSV files from a list of URLs. The `DF$urlLocations` variable is a list of URLs, and the `function(x)` argument is a function that takes each URL in the list as an argument and returns the downloaded CSV file. The `urlDownload()` function is used to download the CSV file from the URL. The `showProgress = TRUE` argument is used to display a progress bar while the download is in progress. The `lapply()` function returns a list of the downloaded CSV files."
      ],
      "metadata": {
        "id": "Bp-WlHermTFO"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "# Delete downloaded legacy data files\n",
        "unlink(csvFiles)"
      ],
      "metadata": {
        "id": "wLPqw0ydmVGY"
      },
      "execution_count": 6,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "source": [
        "**Assistant:** This R language code is deleting downloaded legacy data files.\n",
        "\n",
        "The `unlink()` function is used to delete files in R. The function takes a character vector of file paths as an argument. In this case, the argument is `csvFiles`, which is a vector of file paths to the downloaded legacy data files.\n",
        "\n",
        "The code is using the `unlink()` function to delete the files in the `csvFiles` vector. The `unlink()` function will remove the files from the file system, and the files will no longer be accessible."
      ],
      "metadata": {
        "id": "XH4d8ZCGmYx5"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "# Download legacy data (in parallel)\n",
        "csvFiles <- pbapply::pblapply(DF$urlLocations, urlDownload, cl = cl)"
      ],
      "metadata": {
        "id": "DL5MQDo6manw",
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "outputId": "ec943b71-dfe9-415f-8ab8-d725c45d6182"
      },
      "execution_count": 7,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100%\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "**Assistant:** This R language code is using the `pbapply` package to download a set of CSV files in parallel using the `urlDownload` function.\n",
        "\n",
        "Here's a breakdown of the code:\n",
        "\n",
        "* `DF$urlLocations`: This is a vector of URLs that point to the CSV files to be downloaded.\n",
        "* `urlDownload`: This is a function that downloads a CSV file from a given URL.\n",
        "* `cl`: This is a parallel backend that is used to download the CSV files in parallel.\n",
        "* `pbapply::pblapply`: This is a function from the `pbapply` package that applies the `urlDownload` function to each element in the `DF$urlLocations` vector in parallel.\n",
        "\n",
        "The code is using the `cl` parallel backend to download the CSV files in parallel, which can significantly speed up the download process. The `pbapply` package is used to apply the `urlDownload` function to each element in the `DF$urlLocations` vector in parallel."
      ],
      "metadata": {
        "id": "4n1es1Cnmcw8"
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "## 3. Load and prepare data"
      ],
      "metadata": {
        "id": "vjjW7bkLmfZo"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "# Define the columns to load\n",
        "statCols <- c('count', 'min', 'max', 'median', 'variance')\n",
        "mainCols <- 'median'\n",
        "dropCols <- setdiff(statCols, mainCols)\n",
        "\n",
        "# Read the newest data file and skip the first 4 lines\n",
        "newTable <- data.table::fread(csvFile, skip = 4, drop = dropCols, showProgress = TRUE)\n",
        "\n",
        "# Leave EU data, rename main column to Value\n",
        "newTable <- newTable %>%\n",
        "  rename(Value=all_of(mainCols)) %>%\n",
        "  filter(Country %in% euCodes) %>%\n",
        "  glimpse()"
      ],
      "metadata": {
        "id": "ZtnRdybkmim9",
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "outputId": "d832d9e9-af7a-4fa8-e03c-1780c97baa4e"
      },
      "execution_count": 8,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Rows: 36,351\n",
            "Columns: 5\n",
            "$ Date    \u001b[3m\u001b[90m<IDate>\u001b[39m\u001b[23m 2024-01-02, 2024-01-08, 2024-01-11, 2024-01-17, 2024-01-20, …\n",
            "$ Country \u001b[3m\u001b[90m<chr>\u001b[39m\u001b[23m \"HU\", \"HU\", \"HU\", \"HU\", \"HU\", \"HU\", \"HU\", \"HU\", \"HU\", \"HU\", \"H…\n",
            "$ City    \u001b[3m\u001b[90m<chr>\u001b[39m\u001b[23m \"Debrecen\", \"Debrecen\", \"Debrecen\", \"Debrecen\", \"Debrecen\", \"D…\n",
            "$ Specie  \u001b[3m\u001b[90m<chr>\u001b[39m\u001b[23m \"dew\", \"dew\", \"dew\", \"dew\", \"dew\", \"dew\", \"dew\", \"dew\", \"dew\",…\n",
            "$ Value   \u001b[3m\u001b[90m<dbl>\u001b[39m\u001b[23m 2.5, -9.0, -6.0, -3.0, -5.0, -4.0, 4.0, 5.0, -2.5, -5.0, -5.0,…\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "**Assistant:** This R language code is reading a CSV file and creating a data table from it. Overall, this code is reading a CSV file, dropping unnecessary columns, and renaming the main column to \"Value\", and then filtering the data to only include rows where the \"Country\" column is in the \"euCodes\" vector, and displaying a summary of the data using the `glimpse()` function."
      ],
      "metadata": {
        "id": "CHQrTKTdmkgl"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "# Read legacy data files (sequentially)\n",
        "fileNamesQ <- list.files('.', '^.*Q\\\\d.csv$')\n",
        "oldTable <- do.call(rbind, lapply(fileNamesQ, function(x) data.table::fread(x, skip = 4, drop = dropCols, colClasses = list(IDate=1))))\n",
        "oldTable <- oldTable %>%\n",
        "  rename(Value=all_of(mainCols)) %>%\n",
        "  filter(Country %in% euCodes) %>%\n",
        "  glimpse()"
      ],
      "metadata": {
        "id": "8pEDCyHWmoSY",
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "outputId": "e02d1f18-759c-4553-dc0a-3f4bcef75ace"
      },
      "execution_count": 89,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Rows: 2,891,334\n",
            "Columns: 5\n",
            "$ Date    \u001b[3m\u001b[90m<IDate>\u001b[39m\u001b[23m 2019-01-03, 2019-02-05, 2019-03-04, 2019-03-26, 2019-03-27, …\n",
            "$ Country \u001b[3m\u001b[90m<chr>\u001b[39m\u001b[23m \"CZ\", \"CZ\", \"CZ\", \"CZ\", \"CZ\", \"CZ\", \"CZ\", \"CZ\", \"CZ\", \"CZ\", \"C…\n",
            "$ City    \u001b[3m\u001b[90m<chr>\u001b[39m\u001b[23m \"Prague\", \"Prague\", \"Prague\", \"Prague\", \"Prague\", \"Prague\", \"P…\n",
            "$ Specie  \u001b[3m\u001b[90m<chr>\u001b[39m\u001b[23m \"temperature\", \"temperature\", \"temperature\", \"temperature\", \"t…\n",
            "$ Value   \u001b[3m\u001b[90m<dbl>\u001b[39m\u001b[23m -2.2, -2.0, 9.7, 5.8, 6.6, 5.8, 0.0, 6.3, 12.6, -4.4, 2.1, -1.…\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "**Assistant:** This R language code is reading legacy data files (sequentially) and performing various operations on them.\n",
        "\n",
        "Here's a breakdown of the code:\n",
        "\n",
        "1. `list.files('.', '^.*Q\\d.csv$')`: This line of code is using the `list.files()` function to list all files in the current directory that match the pattern `^.*Q\\d.csv$`. The `'.'` argument specifies the current directory, and the `'^.*Q\\d.csv$'` pattern matches any file that starts with \"Q\" and ends with \".csv\". The resulting list of file names is stored in the `fileNamesQ` variable.\n",
        "2. `do.call(rbind, lapply(fileNamesQ, function(x) data.table::fread(x, skip = 4, drop = dropCols)))`: This line of code is using the `do.call()` function to apply the `rbind()` function to the list of data frames returned by the `lapply()` function. The `lapply()` function is used to read each file in the `fileNamesQ` list using the `data.table::fread()` function, which reads the data from the file into a data frame. The `skip = 4` argument specifies that the first 4 rows of each file should be skipped, and the `drop = dropCols` argument specifies that any columns that are not needed should be dropped. The resulting data frames are then combined into a single data frame using the `rbind()` function.\n",
        "3. `oldTable <- oldTable %>% rename(Value=all_of(mainCols)) %>% filter(Country %in% euCodes) %>% glimpse()`: This line of code is using the `rename()` function to rename the \"Value\" column to the name specified in the `mainCols` variable. The `filter()` function is then used to filter the data to only include rows where the \"Country\" column is in the `euCodes` list. Finally, the `glimpse()` function is used to display a summary of the data.\n",
        "\n",
        "Overall, this code is reading legacy data files (sequentially) and performing various operations on them, including reading the data into a data frame, renaming columns, filtering rows, and displaying a summary of the data."
      ],
      "metadata": {
        "id": "Cf8Z53Qtmrhk"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "# Read legacy data files (in parallel)\n",
        "parallel::clusterExport(cl, c(\"dropCols\"))\n",
        "parallel::clusterEvalQ(cl, pacman::p_load(data.table))\n",
        "fileNamesQ <- list.files('.', '^.*Q\\\\d.csv$')\n",
        "oldTable <- do.call(rbind, pbapply::pblapply(fileNamesQ, function(x) fread(x, skip = 4, drop = dropCols, colClasses = list(IDate=1)), cl = cl))\n",
        "oldTable <- oldTable %>%\n",
        "  rename(Value=all_of(mainCols)) %>%\n",
        "  filter(Country %in% euCodes) %>%\n",
        "  glimpse()"
      ],
      "metadata": {
        "id": "4OMO9Vrtmulo",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 225
        },
        "outputId": "c0d59411-2728-47b7-c389-196210e5a046"
      },
      "execution_count": 90,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/html": [
              "<ol>\n",
              "\t<li><strong>data.table:</strong> TRUE</li>\n",
              "\t<li><strong>data.table:</strong> TRUE</li>\n",
              "</ol>\n"
            ],
            "text/markdown": "1. **data.table:** TRUE\n2. **data.table:** TRUE\n\n\n",
            "text/latex": "\\begin{enumerate}\n\\item \\textbf{data.table:} TRUE\n\\item \\textbf{data.table:} TRUE\n\\end{enumerate}\n",
            "text/plain": [
              "[[1]]\n",
              "data.table \n",
              "      TRUE \n",
              "\n",
              "[[2]]\n",
              "data.table \n",
              "      TRUE \n"
            ]
          },
          "metadata": {}
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100%\n",
            "Rows: 2,891,334\n",
            "Columns: 5\n",
            "$ Date    \u001b[3m\u001b[90m<IDate>\u001b[39m\u001b[23m 2019-01-03, 2019-02-05, 2019-03-04, 2019-03-26, 2019-03-27, …\n",
            "$ Country \u001b[3m\u001b[90m<chr>\u001b[39m\u001b[23m \"CZ\", \"CZ\", \"CZ\", \"CZ\", \"CZ\", \"CZ\", \"CZ\", \"CZ\", \"CZ\", \"CZ\", \"C…\n",
            "$ City    \u001b[3m\u001b[90m<chr>\u001b[39m\u001b[23m \"Prague\", \"Prague\", \"Prague\", \"Prague\", \"Prague\", \"Prague\", \"P…\n",
            "$ Specie  \u001b[3m\u001b[90m<chr>\u001b[39m\u001b[23m \"temperature\", \"temperature\", \"temperature\", \"temperature\", \"t…\n",
            "$ Value   \u001b[3m\u001b[90m<dbl>\u001b[39m\u001b[23m -2.2, -2.0, 9.7, 5.8, 6.6, 5.8, 0.0, 6.3, 12.6, -4.4, 2.1, -1.…\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "**Assistant:** This R language code is using the `parallel` package to read legacy data files in parallel. The code first exports the `dropCols` function to the cluster using `parallel::clusterExport`. Then, it loads the `data.table` package using `pacman::p_load` in the cluster.\n",
        "\n",
        "Next, the code uses `list.files` to get a list of file names that match a specific pattern, and stores the result in `fileNamesQ`. The `pbapply` function is then used to apply the `fread` function to each file name in parallel, using the `cl` argument to specify the cluster. The `fread` function is used to read the data from each file, and the `skip` argument is used to skip the first 4 rows of each file. The `drop` argument is used to drop any columns that are not specified in the `dropCols` function.\n",
        "\n",
        "The resulting data is then combined using `do.call(rbind, ...)`, and the `rename` function is used to rename the `Value` column to `all_of(mainCols)`. The `filter` function is then used to filter the data to only include rows where the `Country` column is in the `euCodes` vector. Finally, the `glimpse` function is used to display a summary of the data."
      ],
      "metadata": {
        "id": "SikQ41ympJuP"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "# Append old (2018-2023) and new (2024) data tables, sort, remove duplicates\n",
        "dataTableEU <- oldTable %>% bind_rows(newTable) %>% arrange(Country, City, Date) %>%\n",
        "  unique() %>%\n",
        "  glimpse()"
      ],
      "metadata": {
        "id": "MdydmbZCpLge",
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "outputId": "809bf355-d787-456d-c3f3-edefc90ff6a6"
      },
      "execution_count": 93,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Rows: 2,771,315\n",
            "Columns: 5\n",
            "$ Date    \u001b[3m\u001b[90m<IDate>\u001b[39m\u001b[23m 2018-12-31, 2018-12-31, 2018-12-31, 2018-12-31, 2018-12-31, …\n",
            "$ Country \u001b[3m\u001b[90m<chr>\u001b[39m\u001b[23m \"AT\", \"AT\", \"AT\", \"AT\", \"AT\", \"AT\", \"AT\", \"AT\", \"AT\", \"AT\", \"A…\n",
            "$ City    \u001b[3m\u001b[90m<chr>\u001b[39m\u001b[23m \"Graz\", \"Graz\", \"Graz\", \"Graz\", \"Graz\", \"Graz\", \"Graz\", \"Graz\"…\n",
            "$ Specie  \u001b[3m\u001b[90m<chr>\u001b[39m\u001b[23m \"pm10\", \"pressure\", \"wind-speed\", \"co\", \"temperature\", \"humidi…\n",
            "$ Value   \u001b[3m\u001b[90m<dbl>\u001b[39m\u001b[23m 11.0, 1027.1, 1.5, 0.1, 3.7, 70.2, 1.1, 14.2, 4.3, 30.0, 1026.…\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "**Assistant:** This R code is combining two data tables, `oldTable` and `newTable`, and sorting the resulting data table by `Country`, `City`, and `Date`. The `unique()` function is then used to remove any duplicate rows from the data table. Finally, the `glimpse()` function is used to display a summary of the data table.\n",
        "\n",
        "Here's a breakdown of the code:\n",
        "\n",
        "1. `dataTableEU <- oldTable %>% bind_rows(newTable)`: This line combines the `oldTable` and `newTable` data tables into a single data table called `dataTableEU`. The `bind_rows()` function is used to concatenate the rows of the two tables.\n",
        "2. `arrange(Country, City, Date)`: This line sorts the data table by `Country`, `City`, and `Date`. The `arrange()` function is used to sort the data table by the specified columns.\n",
        "3. `unique()`: This line removes any duplicate rows from the data table. The `unique()` function is used to identify and remove any rows that have the same values in the specified columns.\n",
        "4. `glimpse()`: This line displays a summary of the data table. The `glimpse()` function is used to display a brief overview of the data table, including the number of rows, columns, and the data types of the columns."
      ],
      "metadata": {
        "id": "Fs7m6dMvpN--"
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "## 4. Check and select vars"
      ],
      "metadata": {
        "id": "QrVVH2DqpSq3"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "# Weather conditions and pollutants (PM10, PM2.5, NO2, Ozone, SO2, CO)\n",
        "\n",
        "# Calculate the proportion of each Species in the data table\n",
        "allVars <- sort(100*prop.table(table(dataTableEU$Specie)), decreasing = TRUE)\n",
        "\n",
        "# Drop the variables that are not needed\n",
        "dropWeat <- c('pressure', 'wind-speed', 'wind-gust', 'wind speed', 'wind gust', 'dew','precipitation')\n",
        "dropPoll <- c('wd', 'aqi', 'uvi', 'pm1', 'neph', 'mepaqi')\n",
        "keepVars <- setdiff(names(allVars), union(dropWeat, dropPoll))\n",
        "\n",
        "# Create a new data table with the info on kept variables\n",
        "setNames(data.table(t(as.numeric(allVars[keepVars]))), names(allVars[keepVars]))"
      ],
      "metadata": {
        "id": "O2V8BZtmpVN5",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 129
        },
        "outputId": "9402dd8a-d5ee-41fd-ba04-87b27bda5b36"
      },
      "execution_count": 94,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/html": [
              "<table class=\"dataframe\">\n",
              "<caption>A data.table: 1 × 8</caption>\n",
              "<thead>\n",
              "\t<tr><th scope=col>temperature</th><th scope=col>humidity</th><th scope=col>pm10</th><th scope=col>no2</th><th scope=col>o3</th><th scope=col>pm25</th><th scope=col>so2</th><th scope=col>co</th></tr>\n",
              "\t<tr><th scope=col>&lt;dbl&gt;</th><th scope=col>&lt;dbl&gt;</th><th scope=col>&lt;dbl&gt;</th><th scope=col>&lt;dbl&gt;</th><th scope=col>&lt;dbl&gt;</th><th scope=col>&lt;dbl&gt;</th><th scope=col>&lt;dbl&gt;</th><th scope=col>&lt;dbl&gt;</th></tr>\n",
              "</thead>\n",
              "<tbody>\n",
              "\t<tr><td>9.893751</td><td>9.885307</td><td>9.635065</td><td>9.41784</td><td>8.339904</td><td>7.234833</td><td>6.704074</td><td>4.524098</td></tr>\n",
              "</tbody>\n",
              "</table>\n"
            ],
            "text/markdown": "\nA data.table: 1 × 8\n\n| temperature &lt;dbl&gt; | humidity &lt;dbl&gt; | pm10 &lt;dbl&gt; | no2 &lt;dbl&gt; | o3 &lt;dbl&gt; | pm25 &lt;dbl&gt; | so2 &lt;dbl&gt; | co &lt;dbl&gt; |\n|---|---|---|---|---|---|---|---|\n| 9.893751 | 9.885307 | 9.635065 | 9.41784 | 8.339904 | 7.234833 | 6.704074 | 4.524098 |\n\n",
            "text/latex": "A data.table: 1 × 8\n\\begin{tabular}{llllllll}\n temperature & humidity & pm10 & no2 & o3 & pm25 & so2 & co\\\\\n <dbl> & <dbl> & <dbl> & <dbl> & <dbl> & <dbl> & <dbl> & <dbl>\\\\\n\\hline\n\t 9.893751 & 9.885307 & 9.635065 & 9.41784 & 8.339904 & 7.234833 & 6.704074 & 4.524098\\\\\n\\end{tabular}\n",
            "text/plain": [
              "  temperature humidity pm10     no2     o3       pm25     so2      co      \n",
              "1 9.893751    9.885307 9.635065 9.41784 8.339904 7.234833 6.704074 4.524098"
            ]
          },
          "metadata": {}
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "**Assistant:** This R language code is creating a new data table with the proportion of each species in the data table, and then dropping certain variables that are not needed.\n",
        "\n",
        "Here's a breakdown of the code:\n",
        "\n",
        "1. `allVars <- sort(100*prop.table(table(dataTableEU$Specie)), decreasing = TRUE)`: This line calculates the proportion of each species in the data table and sorts the results in descending order. The `prop.table` function calculates the proportion of each species in the data table, and the `table` function creates a frequency table of the species. The `sort` function sorts the results in descending order.\n",
        "2. `dropWeat <- c('pressure', 'wind-speed', 'wind-gust', 'wind speed', 'wind gust', 'dew','precipitation')`: This line creates a vector of variables that are not needed in the new data table.\n",
        "3. `dropPoll <- c('wd', 'aqi', 'uvi', 'pm1', 'neph', 'mepaqi')`: This line creates another vector of variables that are not needed in the new data table.\n",
        "4. `keepVars <- setdiff(names(allVars), union(dropWeat, dropPoll))`: This line creates a vector of the variables that are needed in the new data table. The `setdiff` function returns the elements of the first vector that are not in the second vector. The `union` function combines the two vectors of variables that are not needed.\n",
        "5. `setNames(data.table(t(as.numeric(allVars[keepVars]))), names(allVars[keepVars]))`: This line creates a new data table with the info on the kept variables. The `data.table` function creates a data table from the numeric values of the `allVars` vector, and the `setNames` function sets the names of the columns in the data table to the names of the variables in the `keepVars` vector. The `t` function transposes the data table, and the `as.numeric` function converts the data table to a numeric matrix."
      ],
      "metadata": {
        "id": "ddoL9wnrpYQe"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "# Descriptive statistics for daily values of selected variables\n",
        "selectedVars <- c('temperature', 'humidity')\n",
        "dataTableEU <- dataTableEU %>% filter(Specie %in% selectedVars) %>% glimpse()\n",
        "cat('\\n')\n",
        "tapply(dataTableEU$Value, factor(dataTableEU$Specie), summary)"
      ],
      "metadata": {
        "id": "SXMnhVpGpZta",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 289
        },
        "outputId": "084cee9e-4bf2-4bee-c2a3-0dfc00b70553"
      },
      "execution_count": 95,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Rows: 548,140\n",
            "Columns: 5\n",
            "$ Date    \u001b[3m\u001b[90m<IDate>\u001b[39m\u001b[23m 2018-12-31, 2018-12-31, 2019-01-01, 2019-01-01, 2019-01-02, …\n",
            "$ Country \u001b[3m\u001b[90m<chr>\u001b[39m\u001b[23m \"AT\", \"AT\", \"AT\", \"AT\", \"AT\", \"AT\", \"AT\", \"AT\", \"AT\", \"AT\", \"A…\n",
            "$ City    \u001b[3m\u001b[90m<chr>\u001b[39m\u001b[23m \"Graz\", \"Graz\", \"Graz\", \"Graz\", \"Graz\", \"Graz\", \"Graz\", \"Graz\"…\n",
            "$ Specie  \u001b[3m\u001b[90m<chr>\u001b[39m\u001b[23m \"temperature\", \"humidity\", \"temperature\", \"humidity\", \"tempera…\n",
            "$ Value   \u001b[3m\u001b[90m<dbl>\u001b[39m\u001b[23m 3.7, 70.2, 3.0, 75.7, -0.2, 79.5, -1.2, 69.0, -1.4, 66.2, 0.8,…\n",
            "\n"
          ]
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "$humidity\n",
              "   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. \n",
              "   0.00   60.00   73.60   71.27   84.60  100.00 \n",
              "\n",
              "$temperature\n",
              "   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. \n",
              " -67.70    6.80   12.60   12.63   18.50   81.10 \n"
            ]
          },
          "metadata": {}
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "**Assistant:** This R language code is calculating descriptive statistics for the daily values of two variables, `temperature` and `humidity`, in a dataset called `dataTableEU`.\n",
        "\n",
        "Here's a breakdown of the code:\n",
        "\n",
        "1. `selectedVars <- c('temperature', 'humidity')`: This line creates a vector of the names of the variables to be selected.\n",
        "2. `dataTableEU <- dataTableEU %>% filter(Specie %in% selectedVars) %>% glimpse()`: This line filters the `dataTableEU` dataset to only include rows where the `Specie` column matches one of the values in the `selectedVars` vector. The `glimpse()` function is used to display a summary of the filtered dataset.\n",
        "3. `cat('\n",
        "')`: This line prints a blank line to the console.\n",
        "4. `tapply(dataTableEU$Value, factor(dataTableEU$Specie), summary)`: This line calculates the summary statistics for the `Value` column of the filtered `dataTableEU` dataset, grouped by the `Specie` column. The `tapply()` function is used to apply a function to each group of the dataset, in this case the `summary()` function. The `factor()` function is used to convert the `Specie` column to a factor, which allows the data to be grouped by the levels of the factor."
      ],
      "metadata": {
        "id": "1fd8pl1wpbZC"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "# How many cities exist for each country?\n",
        "countrySize <- dataTableEU %>% select(Country, City) %>% unique() %>% group_by(Country) %>% tally(sort = TRUE) %>% rename(Cities = n)\n",
        "cbind(t(head(countrySize, 13)), matrix(\"..\",2,1), t(tail(countrySize, 6)))"
      ],
      "metadata": {
        "id": "FoypFQ4qpdMN",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 97
        },
        "outputId": "69684d3b-260b-42a0-c03c-d749db7c7635"
      },
      "execution_count": 96,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/html": [
              "<table class=\"dataframe\">\n",
              "<caption>A matrix: 2 × 20 of type chr</caption>\n",
              "<tbody>\n",
              "\t<tr><th scope=row>Country</th><td>FR</td><td>ES</td><td>DE</td><td>RO</td><td>PL</td><td>IT</td><td>NL</td><td>HU</td><td>BE</td><td>AT</td><td>CZ</td><td>FI</td><td>SE</td><td>..</td><td>PT</td><td>SK</td><td>DK</td><td>EE</td><td>IE</td><td>LT</td></tr>\n",
              "\t<tr><th scope=row>Cities</th><td>27</td><td>23</td><td>17</td><td>17</td><td>14</td><td>12</td><td>11</td><td> 7</td><td> 6</td><td> 5</td><td> 5</td><td> 5</td><td> 4</td><td>..</td><td>2 </td><td>2 </td><td>1 </td><td>1 </td><td>1 </td><td>1 </td></tr>\n",
              "</tbody>\n",
              "</table>\n"
            ],
            "text/markdown": "\nA matrix: 2 × 20 of type chr\n\n| Country | FR | ES | DE | RO | PL | IT | NL | HU | BE | AT | CZ | FI | SE | .. | PT | SK | DK | EE | IE | LT |\n| Cities | 27 | 23 | 17 | 17 | 14 | 12 | 11 |  7 |  6 |  5 |  5 |  5 |  4 | .. | 2  | 2  | 1  | 1  | 1  | 1  |\n\n",
            "text/latex": "A matrix: 2 × 20 of type chr\n\\begin{tabular}{r|llllllllllllllllllll}\n\tCountry & FR & ES & DE & RO & PL & IT & NL & HU & BE & AT & CZ & FI & SE & .. & PT & SK & DK & EE & IE & LT\\\\\n\tCities & 27 & 23 & 17 & 17 & 14 & 12 & 11 &  7 &  6 &  5 &  5 &  5 &  4 & .. & 2  & 2  & 1  & 1  & 1  & 1 \\\\\n\\end{tabular}\n",
            "text/plain": [
              "        [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13]\n",
              "Country FR   ES   DE   RO   PL   IT   NL   HU   BE   AT    CZ    FI    SE   \n",
              "Cities  27   23   17   17   14   12   11    7    6    5     5     5     4   \n",
              "        [,14] [,15] [,16] [,17] [,18] [,19] [,20]\n",
              "Country ..    PT    SK    DK    EE    IE    LT   \n",
              "Cities  ..    2     2     1     1     1     1    "
            ]
          },
          "metadata": {}
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "**Assistant:** This R language code is creating a data frame called `countrySize` that contains the number of cities for each country in the European Union.\n",
        "\n",
        "Here's a breakdown of the code:\n",
        "\n",
        "1. `dataTableEU %>% select(Country, City) %>% unique()`: This line selects the `Country` and `City` columns from the `dataTableEU` data frame and removes any duplicate rows.\n",
        "2. `group_by(Country)`: This line groups the data by `Country`.\n",
        "3. `tally(sort = TRUE)`: This line counts the number of cities for each country and sorts the results in ascending order.\n",
        "4. `rename(Cities = n)`: This line renames the column `n` to `Cities`.\n",
        "5. `cbind(t(head(countrySize, 13)), matrix(\"..\",2,1), t(tail(countrySize, 6)))`: This line combines the first 13 rows of the `countrySize` data frame with a 2x1 matrix of dots, and then combines the last 6 rows of the `countrySize` data frame with the result. The `t()` function is used to transpose the data frames, and the `cbind()` function is used to combine the data frames.\n",
        "\n",
        "The resulting data frame has the following columns:\n",
        "\n",
        "* `Country`: The name of the country.\n",
        "* `Cities`: The number of cities in the country.\n",
        "* `..`: A 2x1 matrix of dots.\n",
        "* `Country`: The name of the country.\n",
        "* `Cities`: The number of cities in the country.\n",
        "\n",
        "The code is using the `dplyr` package to perform the data manipulation, and the `matrix()` function to create the 2x1 matrix of dots."
      ],
      "metadata": {
        "id": "lhrkIiyMpguJ"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "# Which EU countries are we missing?\n",
        "eurostat::eu_countries %>% filter(code %in% setdiff(euCodes, unique(dataTableEU$Country))) %>% select(name) %>% glimpse()"
      ],
      "metadata": {
        "id": "kKAE66oQpiXB",
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "outputId": "74a3c866-e71f-4625-8bc2-11e7473bd4d0"
      },
      "execution_count": 97,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Rows: 4\n",
            "Columns: 1\n",
            "$ name \u001b[3m\u001b[90m<chr>\u001b[39m\u001b[23m \"Latvia\", \"Luxembourg\", \"Malta\", \"Slovenia\"\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "**Assistant:** This R code is using the `eurostat` package to retrieve a list of all EU countries, and then filtering that list to only include countries that are not present in the `dataTableEU` data frame. In summary, this code is retrieving a list of all EU countries that are not present in the `dataTableEU` data frame, and then extracting the `name` column from the resulting data frame.\n",
        "\n",
        "The code is using the pipe operator (`%>%`) to chain together multiple operations, which makes the code more readable and easier to understand. The pipe operator allows the output of one operation to be passed as input to the next operation, which makes it easier to write and read complex R code."
      ],
      "metadata": {
        "id": "2R6R7nPRpkpU"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "# 2021-10-03 Barcelona fix\n",
        "dataTableEU %>% glimpse()\n",
        "dataTableEU <- dataTableEU %>% group_by(Date, Country, City, Specie) %>% summarize(Value=mean(Value), .groups=\"drop\") %>% glimpse()"
      ],
      "metadata": {
        "id": "kIHN3-X3pm-V",
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "outputId": "d13bf577-b350-4884-b095-726c0379c1de"
      },
      "execution_count": 98,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Rows: 548,140\n",
            "Columns: 5\n",
            "$ Date    \u001b[3m\u001b[90m<IDate>\u001b[39m\u001b[23m 2018-12-31, 2018-12-31, 2019-01-01, 2019-01-01, 2019-01-02, …\n",
            "$ Country \u001b[3m\u001b[90m<chr>\u001b[39m\u001b[23m \"AT\", \"AT\", \"AT\", \"AT\", \"AT\", \"AT\", \"AT\", \"AT\", \"AT\", \"AT\", \"A…\n",
            "$ City    \u001b[3m\u001b[90m<chr>\u001b[39m\u001b[23m \"Graz\", \"Graz\", \"Graz\", \"Graz\", \"Graz\", \"Graz\", \"Graz\", \"Graz\"…\n",
            "$ Specie  \u001b[3m\u001b[90m<chr>\u001b[39m\u001b[23m \"temperature\", \"humidity\", \"temperature\", \"humidity\", \"tempera…\n",
            "$ Value   \u001b[3m\u001b[90m<dbl>\u001b[39m\u001b[23m 3.7, 70.2, 3.0, 75.7, -0.2, 79.5, -1.2, 69.0, -1.4, 66.2, 0.8,…\n",
            "Rows: 548,137\n",
            "Columns: 5\n",
            "$ Date    \u001b[3m\u001b[90m<IDate>\u001b[39m\u001b[23m 2018-12-31, 2018-12-31, 2018-12-31, 2018-12-31, 2018-12-31, …\n",
            "$ Country \u001b[3m\u001b[90m<chr>\u001b[39m\u001b[23m \"AT\", \"AT\", \"AT\", \"AT\", \"AT\", \"AT\", \"AT\", \"AT\", \"AT\", \"AT\", \"B…\n",
            "$ City    \u001b[3m\u001b[90m<chr>\u001b[39m\u001b[23m \"Graz\", \"Graz\", \"Innsbruck\", \"Innsbruck\", \"Linz\", \"Linz\", \"Sal…\n",
            "$ Specie  \u001b[3m\u001b[90m<chr>\u001b[39m\u001b[23m \"humidity\", \"temperature\", \"humidity\", \"temperature\", \"humidit…\n",
            "$ Value   \u001b[3m\u001b[90m<dbl>\u001b[39m\u001b[23m 70.2, 3.7, 93.0, 0.0, 92.0, 3.3, 96.5, 1.0, 70.0, 4.5, 92.6, 9…\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "**Assistant:** This R language code is a data manipulation script that performs several operations on a data table called \"dataTableEU\".\n",
        "\n",
        "Here's a breakdown of the code:\n",
        "\n",
        "1. `dataTableEU %>% glimpse()`: This line of code displays a summary of the data table \"dataTableEU\" using the `glimpse()` function.\n",
        "2. `dataTableEU <- dataTableEU %>% group_by(Date, Country, City, Specie) %>% summarize(Value=mean(Value), .groups=\"drop\")`: This line of code groups the data table by the columns \"Date\", \"Country\", \"City\", and \"Specie\", and then calculates the mean of the \"Value\" column for each group. The `.groups=\"drop\"` argument tells R to drop the grouping columns from the resulting data table.\n",
        "3. `dataTableEU %>% glimpse()`: This line of code displays a summary of the modified data table \"dataTableEU\" using the `glimpse()` function.\n",
        "\n",
        "In summary, this code groups the data table by the specified columns, calculates the mean of the \"Value\" column for each group, and drops the grouping columns from the resulting data table."
      ],
      "metadata": {
        "id": "YXCb7BiGpshg"
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "## 5. Pivot and calculate THI"
      ],
      "metadata": {
        "id": "Lfw8wcI2p0uB"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "# Create pivot table, calculate THI for each row, drop rows with missing THI values\n",
        "selectedVars <- c('temperature', 'humidity')\n",
        "dataTableTHI <- dataTableEU %>%\n",
        "  pivot_wider(names_from=Specie, values_from=Value) %>%\n",
        "  group_by(Date, Country) %>%\n",
        "  mutate(across(all_of(selectedVars), ~ ifelse(is.na(.), median(.,na.rm=TRUE), .))) %>%\n",
        "  mutate(THI = 0.8*temperature + (humidity/100)*(temperature-14.4) + 46.4) %>%\n",
        "  filter(!is.na(THI)) %>%\n",
        "  data.table %>% glimpse()"
      ],
      "metadata": {
        "id": "FX9gtAnJp3vf",
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "outputId": "5b273672-35c7-4d6a-ac90-a0e019bc3a18"
      },
      "execution_count": 99,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Rows: 274,160\n",
            "Columns: 6\n",
            "$ Date        \u001b[3m\u001b[90m<IDate>\u001b[39m\u001b[23m 2018-12-31, 2018-12-31, 2018-12-31, 2018-12-31, 2018-12-…\n",
            "$ Country     \u001b[3m\u001b[90m<chr>\u001b[39m\u001b[23m \"AT\", \"AT\", \"AT\", \"AT\", \"AT\", \"BE\", \"BE\", \"BE\", \"BE\", \"BE\"…\n",
            "$ City        \u001b[3m\u001b[90m<chr>\u001b[39m\u001b[23m \"Graz\", \"Innsbruck\", \"Linz\", \"Salzburg\", \"Vienna\", \"Antwer…\n",
            "$ humidity    \u001b[3m\u001b[90m<dbl>\u001b[39m\u001b[23m 70.2, 93.0, 92.0, 96.5, 70.0, 92.6, 93.0, 93.0, 92.5, 100.…\n",
            "$ temperature \u001b[3m\u001b[90m<dbl>\u001b[39m\u001b[23m 3.7, 0.0, 3.3, 1.0, 4.5, 9.4, 9.4, 7.7, 8.8, 8.0, 8.8, 3.0…\n",
            "$ THI         \u001b[3m\u001b[90m<dbl>\u001b[39m\u001b[23m 41.8486, 33.0080, 38.8280, 34.2690, 43.0700, 49.2900, 49.2…\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "**Assistant:** This R language code creates a pivot table from a data table called \"dataTableEU\" and calculates the THI (Temperature Humidity Index) for each row.\n",
        "\n",
        "Here's a breakdown of the code:\n",
        "\n",
        "1. `selectedVars <- c('temperature', 'humidity')`: This line defines a vector of variables to be used in the pivot table.\n",
        "2. `dataTableTHI <- dataTableEU %>% pivot_wider(names_from=Specie, values_from=Value) %>% group_by(Date, Country) %>% mutate(across(all_of(selectedVars), ~ ifelse(is.na(.), median(.,na.rm=TRUE), .)))`: This line creates a pivot table from the data table \"dataTableEU\" using the \"pivot_wider\" function. The \"names_from\" argument specifies the variable to be used as the column names, and the \"values_from\" argument specifies the variable to be used as the values. The \"group_by\" function groups the data by the \"Date\" and \"Country\" variables. The \"mutate\" function applies a function to the selected variables (in this case, \"temperature\" and \"humidity\") to replace missing values with the median value.\n",
        "3. `mutate(THI = 0.8*temperature + (humidity/100)*(temperature-14.4) + 46.4)`: This line calculates the THI for each row using the formula: THI = 0.8*temperature + (humidity/100)*(temperature-14.4) + 46.4.\n",
        "4. `filter(!is.na(THI))`: This line filters the data to only include rows where the THI value is not missing.\n",
        "5. `data.table %>% glimpse()`: This line displays a summary of the data table using the \"glimpse\" function.\n",
        "\n",
        "In summary, this code creates a pivot table from a data table, calculates the THI for each row, and filters out rows with missing THI values."
      ],
      "metadata": {
        "id": "4-V4hagbp4Yh"
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "## 6. THI statistics and plots"
      ],
      "metadata": {
        "id": "x_A8Jqw_p7Lw"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "# An simple function to turn an xts time series into a ggplot calendar heatmap\n",
        "# https://margintale.blogspot.com/2018/01/ggplot2-time-series-heatmaps-revisited.html\n",
        "xts_heatmap <- function(x) {\n",
        "  data.frame(Date=as.Date(index(x)), x[,1]) %>%\n",
        "    setNames(c(\"Date\",\"Value\")) %>%\n",
        "    dplyr::mutate(\n",
        "      Year=lubridate::year(Date),\n",
        "      Month=lubridate::month(Date),\n",
        "      # I use factors here to get plot ordering in the right order without worrying about locale\n",
        "      MonthTag=factor(Month,levels=as.character(1:12),\n",
        "                      labels=c(\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"),ordered=TRUE),\n",
        "      # week start on Monday in my world\n",
        "      Wday=lubridate::wday(Date,week_start=1),\n",
        "      # the rev reverse here is just for the plotting order\n",
        "      WdayTag=factor(Wday,levels=rev(1:7),labels=rev(c(\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\",\"Sun\")),ordered=TRUE),\n",
        "      Week=as.numeric(format(Date,\"%W\"))\n",
        "    ) %>%\n",
        "    # group by year and month and then calculate the week of the month we are currently in\n",
        "    dplyr::group_by(Year,Month) %>%\n",
        "    dplyr::mutate(Wmonth=1+Week-min(Week)) %>%\n",
        "    dplyr::ungroup() %>%\n",
        "    ggplot2::ggplot(aes(x=Wmonth, y=WdayTag, fill=Value)) +\n",
        "    ggplot2::geom_tile(colour=\"white\") +\n",
        "    ggplot2::facet_grid(Year~MonthTag) +\n",
        "    ggplot2::scale_fill_gradientn(colours=coolwarm(100), guide=\"colourbar\") +\n",
        "    ggplot2::labs(x=\"Week of Month\", y=NULL)\n",
        "}"
      ],
      "metadata": {
        "id": "l3KeBmvEp78x"
      },
      "execution_count": 100,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "source": [
        "**Assistant:** This is an R function that takes an xts time series as input and returns a ggplot calendar heatmap."
      ],
      "metadata": {
        "id": "EpK0iLpMp_4W"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "# Descriptive statistics for yearly THI\n",
        "myCity <- 'Kaunas'\n",
        "myTable <- dataTableTHI %>% filter(City==myCity, Date>='2019-01-01') %>% select(Date, THI)\n",
        "do.call(rbind, tapply(myTable$THI, year(myTable$Date), summary))"
      ],
      "metadata": {
        "id": "v4wE5wgDqCP_",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 255
        },
        "outputId": "f0a75c44-0777-4282-c7bc-369a5d4025f7"
      },
      "execution_count": 101,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/html": [
              "<table class=\"dataframe\">\n",
              "<caption>A matrix: 6 × 6 of type dbl</caption>\n",
              "<thead>\n",
              "\t<tr><th></th><th scope=col>Min.</th><th scope=col>1st Qu.</th><th scope=col>Median</th><th scope=col>Mean</th><th scope=col>3rd Qu.</th><th scope=col>Max.</th></tr>\n",
              "</thead>\n",
              "<tbody>\n",
              "\t<tr><th scope=row>2019</th><td>13.640</td><td>38.9960</td><td>49.53540</td><td>49.24271</td><td>59.72262</td><td>75.0560</td></tr>\n",
              "\t<tr><th scope=row>2020</th><td>28.020</td><td>40.6560</td><td>50.18475</td><td>50.38856</td><td>59.67312</td><td>71.4790</td></tr>\n",
              "\t<tr><th scope=row>2021</th><td> 2.696</td><td>35.8275</td><td>47.17400</td><td>46.69031</td><td>58.80125</td><td>74.7400</td></tr>\n",
              "\t<tr><th scope=row>2022</th><td>21.632</td><td>39.6800</td><td>50.30800</td><td>50.23746</td><td>60.31200</td><td>73.6255</td></tr>\n",
              "\t<tr><th scope=row>2023</th><td>17.000</td><td>34.8800</td><td>44.34750</td><td>44.72900</td><td>53.77200</td><td>71.9085</td></tr>\n",
              "\t<tr><th scope=row>2024</th><td> 3.476</td><td>21.2165</td><td>25.91000</td><td>25.60470</td><td>33.15200</td><td>37.2840</td></tr>\n",
              "</tbody>\n",
              "</table>\n"
            ],
            "text/markdown": "\nA matrix: 6 × 6 of type dbl\n\n| <!--/--> | Min. | 1st Qu. | Median | Mean | 3rd Qu. | Max. |\n|---|---|---|---|---|---|---|\n| 2019 | 13.640 | 38.9960 | 49.53540 | 49.24271 | 59.72262 | 75.0560 |\n| 2020 | 28.020 | 40.6560 | 50.18475 | 50.38856 | 59.67312 | 71.4790 |\n| 2021 |  2.696 | 35.8275 | 47.17400 | 46.69031 | 58.80125 | 74.7400 |\n| 2022 | 21.632 | 39.6800 | 50.30800 | 50.23746 | 60.31200 | 73.6255 |\n| 2023 | 17.000 | 34.8800 | 44.34750 | 44.72900 | 53.77200 | 71.9085 |\n| 2024 |  3.476 | 21.2165 | 25.91000 | 25.60470 | 33.15200 | 37.2840 |\n\n",
            "text/latex": "A matrix: 6 × 6 of type dbl\n\\begin{tabular}{r|llllll}\n  & Min. & 1st Qu. & Median & Mean & 3rd Qu. & Max.\\\\\n\\hline\n\t2019 & 13.640 & 38.9960 & 49.53540 & 49.24271 & 59.72262 & 75.0560\\\\\n\t2020 & 28.020 & 40.6560 & 50.18475 & 50.38856 & 59.67312 & 71.4790\\\\\n\t2021 &  2.696 & 35.8275 & 47.17400 & 46.69031 & 58.80125 & 74.7400\\\\\n\t2022 & 21.632 & 39.6800 & 50.30800 & 50.23746 & 60.31200 & 73.6255\\\\\n\t2023 & 17.000 & 34.8800 & 44.34750 & 44.72900 & 53.77200 & 71.9085\\\\\n\t2024 &  3.476 & 21.2165 & 25.91000 & 25.60470 & 33.15200 & 37.2840\\\\\n\\end{tabular}\n",
            "text/plain": [
              "     Min.   1st Qu. Median   Mean     3rd Qu.  Max.   \n",
              "2019 13.640 38.9960 49.53540 49.24271 59.72262 75.0560\n",
              "2020 28.020 40.6560 50.18475 50.38856 59.67312 71.4790\n",
              "2021  2.696 35.8275 47.17400 46.69031 58.80125 74.7400\n",
              "2022 21.632 39.6800 50.30800 50.23746 60.31200 73.6255\n",
              "2023 17.000 34.8800 44.34750 44.72900 53.77200 71.9085\n",
              "2024  3.476 21.2165 25.91000 25.60470 33.15200 37.2840"
            ]
          },
          "metadata": {}
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "**Assistant:** This R language code is calculating descriptive statistics for the THI (Temperature Humidity Index) data for a specific city (Kaunas) in a data table.\n",
        "\n",
        "Here's a breakdown of the code:\n",
        "\n",
        "1. `myCity <- 'Kaunas'`: This line sets the variable `myCity` to the string \"Kaunas\".\n",
        "2. `myTable <- dataTableTHI %>% filter(City==myCity, Date>='2019-01-01') %>% select(Date, THI)`: This line filters the data table `dataTableTHI` to include only rows where the `City` column is equal to \"Kaunas\" and the `Date` column is greater than or equal to \"2019-01-01\". It then selects the `Date` and `THI` columns from the filtered data.\n",
        "3. `do.call(rbind, tapply(myTable$THI, year(myTable$Date), summary))`: This line calculates the descriptive statistics (mean, median, and standard deviation) for the `THI` column in the filtered data, grouped by the year of the `Date` column. The `tapply()` function applies the `summary()` function to each group of the data, and the `do.call()` function combines the results into a single data frame. The `rbind()` function is used to stack the results vertically.\n",
        "\n",
        "Overall, this code is calculating descriptive statistics for the THI data for the city of Kaunas since year 2019."
      ],
      "metadata": {
        "id": "OQUp_YLtqEy_"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "# Plot THI time series calendar heatmap\n",
        "myTitle <- paste(\"THI @\", myCity)\n",
        "xts_dataset <- xts(myTable[,'THI'], order.by = as.Date(myTable$Date))\n",
        "xts_heatmap(xts_dataset) + labs(title=myTitle) + coord_fixed(1) + theme_minimal(base_size=7)"
      ],
      "metadata": {
        "id": "qku6kQOMqMaq",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 437
        },
        "outputId": "159c211f-9a64-411a-ee0e-74715ad74521"
      },
      "execution_count": 102,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "plot without title"
            ],
            "image/png": "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\n999//9NPP33ppZe6fvmrr7764x//+LXXXjv++OMPJwwAAACAfqivErva2tphw4YNGzasurqa\n5/lhB5mH5XLQ2dl5ww03vPTSS5WVlfPnz29oaKipqfn5z38+d+7c+fPn33333U888UQXL3/v\nvfcuueSSBQsWTJs2zWhpaWmZOnVqIBCorq6+7LLLkskkY2z37t0cx23YsMF4ziOPPDJhwgTG\nWDgc5jjulVdemTp16rBhw44++uhVq1Z18T6MsUcffbSpqcntdjc1NT3yyCM5LzgAAABATxxJ\nc+xefPHFb37zm0OGDJk/f/6TTz7Z0tKyc+fOaDS6YMGCyZMnn3LKKZ999lm21y5btuzb3/72\nU0899c1vftNo0XV95syZJ510Umtr60cfffSvf/1r/vz5XXy6JEmMsaeeeuqtt97asGHDyJEj\nb7vtti7eZ9WqVT/96U//93//NxqN/vd///ett966cuXKfHYHAAAAwKHEYn3wTTfddPPNN5v/\n1XXdyJy68Prrr1911VWJROLOO+98/fXXBwwYwBibM2fOE088cfTRR4uiyHEc+cJ169bde++9\nY8eOPf/8881GjuM+/fTTYDDocrmGDBly9tlnf/zxx92Gfdlll3m9XsbYqaeeev/993fxPqFQ\niOO4iooKQRCOP/74trY2QRC67xcAAACAXBXtiN3111+/PMM999zT7Us2b948bNiwtWvX6ro+\nefJko3HDhg0TJkxwu92dnZ3l5eXkC1944YXbbrtt3bp1d999d2b7Rx99dOqpp1ZXV9fW1v7h\nD39IJBLdxlBfX288cLvd8Xi8i/c5/vjjZ86cedRRR5155pkPP/xwZ2dnt28OAAAAcDiKltjV\n1taOydDQ0NDtSzo6OoLBYHt7e1lZmdn4xBNPjBs3jjH2j3/8Y8qUKeQLb7vttmuuueall166\n6667Xn31VaNx1apVM2fOnDt37s6dO3fv3n3ZZZeRr9V1PfO/9oOC2d5HEIQ///nPy5cvnz59\n+p/+9Kfm5uYtW7Z0u4wAAAAAOTuS5tjV1tZu37599OjRu3btWrFiRTQa/dnPfpZOp2VZ3rNn\nz1133XXttdeSLxRFkTF28skn33fffRdffLEx123p0qXl5eWXXnqp8deWlhbjycblHebRu61b\nt3YdVbb3SafTbW1tI0eOvPHGG1taWurq6l555ZXD7wQAAACAbI6kxO6UU055/fXXa2pqnnzy\nye9973snnnjimDFjHnrooYULF06fPv2BBx4wDt114dprr505c+aMGTP27ds3ePDg9vb21atX\nh8PhO++8MxaL7dq1izFWWlpaWVn53nvvMca2bdv217/+tev3zPY+v//976dMmbJu3TpN09as\nWbN79+6mpqb8dAQAAAAA5UhK7K666qrHH398/fr1F1988Zo1a1asWHHRRReNGzdu3bp1//rX\nv84+++yevMmTTz5ZXl7+3e9+96STTpozZ86JJ544YsQIWZafffbZTZs2zZgxgzH2+OOP33//\n/c3NzVdfffW1116bTqe7eMNp06aR7zN37txzzz132rRpHo/n3HPPnTdv3re+9a38dAQAAAAA\nhbPMIevnXnrppXnz5t12223f+c53qqqqQqHQ4sWLn3nmmY0bN37yySfFjg4AAACgmI6wxI4x\ntmrVqnvvvff999/v6OgIBALjx4//9re/fcEFF3g8nmKHBgAAAFBMR15iBwAAAACkI2mOHQAA\nAAB0AYkdAAAAgEMgsQMAAABwCCR2AAAAAA6BxA4AAADAIZDYAQAAADgEEjsAAAAAh0BiBwAA\nAOAQSOwAAAAAHAKJHQAAAIBDILEDAAAAcAgkdgXy4osvPvHEE8WOAgCwMQKAk/XTxG7fvn3f\n//73R44cWexAeqqlpeWYY475/kFLly4tdkQ90tLSMnjw4N27dxv//ec//zlw4MDihtRz999/\n/x133FHsKLp3RHfyEbclmo7EyI+UVdqgKMrNN988d+7cK6644qKLLtqyZUuxI+qpt95663vf\n+95FF100a9as+fPna5pmecLWrVt/+ctfFiU2u5aWlmHDhm3cuNH47znnnFPceHqopaVl0qRJ\ns2fP/uEPfzh37twNGzYUO6KvEbHYAdAqKyufe+65E088kTEWCoXmzZtXWlq6e/fuBx988P/+\n7/8WLlw4bNiwFStWXHfddcccc0yxgz3gxBNPnD9/vvnfeDx+ww03BAKB/fv3/9d//Rdj7MMP\nP9y8efOGDRtuvfXWiRMnFi/SQ0ycOPHFF1+89tprGWOvv/768OHDma3PP/jggzfffNPn8z38\n8MPFjveAzs5ORVGOPfbYRYsWTZ06dcGCBW+//faIESPWrFkzb968DRs29KuAe9LJl1122dNP\nP11dXf38889HIpHLL7+82FEzduiW+MILL0Sj0blz57777ruLFi0aPXp0/9wSDV1E3tzcXOzo\nCJZV2hLzFVdccd111zU1NQmCwBi76667ih0vW7FiRSgUeuqppxhjq1at2rVrV01NTeagt2jR\nosytcsKECcUOmTHGVq1a9eijjz7//POBQEBV1ZtuuulPf/rTt7/97Xnz5gmCoKrq/PnzH3jg\ngTVr1pxyyiknnXRSseNljLHp06f//Oc/f+GFF4xvnzEWDod/+tOflpaW7t2792c/+9kNN9zw\n7LPPVlRUPPfcc8lkcu7cucUN2DB58mRjn7hmzZorr7zyb3/7m6ZpmWtIIBDI7Hafz1fskB2i\nnx6xy9Te3j5nzpwHH3zwtNNOe/PNNxlj5eXlN9xww6WXXvqPf/yj2NFl9ec//3nSpEn33HPP\n7NmzH3vsMcZYZWXlPffcc8cddzz++OPFju4rEyZMWLp0qa7r7e3tXq/X4/EwW59zHFdRUdFP\nkiTDCy+8MGPGjLPOOuvVV19ljPE8X1tbe9NNN910002PPfZYfwu4J508a9asF198kTH297//\nfebMmcUOuUeOiC3xSGFZpS0WLFgwc+bMu+++u6qqiuO4wodnN3r06GQyefPNN7/88ssVFRWT\nJ0+2DHqWrbLY8R6wcOHCWbNmBQIBxpggCFdcccWbb775pz/9afr06U899dTFF1/c2tp67rnn\nTps2rZ9kdYyx+vr6s88+O3P+wAsvvHDSSSfdc889P/7xjx9++OFvfetbb7zxBmPs73//+3nn\nnVe8SGkjR44cOnTosmXLLGuIpduLHaZz9NMjdpk8Hs+rr7761ltvrV+//pRTTgkEAnV1dYwx\nt9udSCSKHd1XPvjgg4suush4fOedd27dunXTpk2fffaZqqper5cxNmTIEMbYgAED9uzZU8xA\nD8Vx3Mknn7xkyZJVq1Z973vfu/XWWxnV5w0NDcWO9Cuqqr7yyisrVqxgjK1Zs2br1q2Msfr6\nesZYdXW10b39KuCedPLFF188c+bMWbNmeTyeqqqqYofcI/1zSzwSkat0pl27dh177LGMsdGj\nR//73/8uQog2brf7mWeeaW1t/eSTT2699dbjjz/ePuhZtsr+gOM4XdfN/+q6LgjCjh07xo4d\nyxg77bTTGGP97byhrus//OEPL7744unTpxst27ZtO/PMMxljjY2NO3bsuPPOO+fNm3fGGWe4\n3e7+OXooihIMBi1riKXbIV/6Y2J3//33f//73y8tLeV5njH21FNPTZkyZcaMGb/5zW/skyH6\n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\nY8dvrkjEnK986+2gJwhCt4NeAdb23AY9nuf7fDjOzhx4yUHPviWag16mzK5WqfvB5p0ZQ68G\nvUy2fWKf6+2gxxhramq68cYbb7/99gceeODMM898+WViSq6DERdPTJw4ccGCBUcffTRjrKGh\n4bXXXps8eTKzVSR+5513jErF27cT8z0FQSjMsaIumDEYX3y3hw8zS4maCn/c0fw4juMEQej2\n0+2boqIooigWsv/NGIxjG93GzPO8MSJkrdOfP5mrYhffpiiK3dbqLO4RaIMZpHGItNuQ7Fui\ncUevQi6LGYMxOpu/OrpghFeA1aPbGNjB1TWHrjZue1WUrv66DXqFl/OglymzqwtzZ7HMOHMb\n9Aq/evR20DM0NzefcsopP//5z6dPn07eXsXBiOF18uTJCxcuPPbYYxljkyZNWrRo0THHHMMY\nO+OMM1asWPHb3/72vvvua21tPf300995553f/va327ZtK3TUAAAAAJSxY8cyxr71rW9Nnz79\n3XffveOOO4odUUER2fqIESNeeeUV4/Fxxx334osvGo89Ho+lIvGvfvWrbj+gvsJjL2rC80zR\nuIoAcQTV79LI4molPn7qKOL9a8qYV3IrhbqN8sBqYiJE0CcOrCIWU+Q5r1gme6j6GpL1rI2h\nLw6zlZf5VZU4qeWSBZdM/PRxu116/TAiNl9JPXW7S17IffKQWDOIDxClUtwer0T1j8vj4cdP\nI2Ior3HJQT1RoPvXycecbm8Uaodw3gBx/lB06TVxoW6I/SVKmpPqBhLv3zRClIheFQLd3LYo\nByWTT/IMHmxv940e03z3Dfb28imTvBVEoSIxWJpK8GWTj81jbHztIJksc1g90DX5G/Z2obJe\nqBmox4m5B5wiuxoH29vdg5v0BFFbTqhu6HW4NpZbqnsnTZUHHWV/mlhTI1QSNTWE+iHuk84h\n2msby87xabFCre3HnkHFMFieNJ2o2ujy8BXVPFm10e3nPVR1Rjn3ewJLY04i3jBYoemqnqbO\n08YTfCVRY08cMIQPEAM1X17bkCKmevbFGUghWMl7iAn+QqCCG3cyGZvf5SfL9blkyesidiUC\nn/+JnlUVRMw8z3s1odxPDBSSq0x0E10t+UqCHLHrz62O3dVXX/3nP/95xYoVuq6PHz9+2DBi\nj+ZgvTig/d577+3bt++73/1urz5g9Q5etdWxkyVux67U6q3EGnnlOalEhJjWrbpLFrxBTNeb\n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\nHYIgCIIgSIOAAzsEQRAEQZAGAQd2CIK40tvb++yzz7K/33vvPUEQdu3axf77X//1X5/4xCfK\nSWTLli3nnXde+Zl++ctf7u7u3rFjB/tvKpUSBOFv//Zvi4/p7u6++OKLy0/ziSeeIITs3Lnz\n3HPPLf8sBEGQ0w4c2CEI4sqqVateeOEF9veLL744a9asl156if33pZdeWrVqVS0yffrpp195\n5ZVipdO2trYXXnghlUqx/7755puZTKb8BC3L+s53vlNlLxEEQcYlOLBDEMSVVatWFUZyL774\n4m233fbiiy8W/ssGdo8++ujll1++fPny5cuX79+/H7Qwjh071t3dvXHjxuIsfvSjHy1evPiK\nK65YsWLF/v37/+Zv/iaXy11zzTU7d+4sPuyyyy77z//8T/b3o48+unr1arcUtm3btnDhwjvv\nvPOv//qvFyxY8MYbb1x//fVHjhy54oor0um0IAhf//rXL7nkkq6uri1btlS/yhAEQcYWiiAI\n4oJt2+3t7bt379Z1ffLkybquT5kyJZVKvffeey0tLaZpbt26deHChYZhUEqfffbZlStX8pY3\n33xz/vz5Q0NDCxYs+O///u/i9N98881Zs2ZlMhlK6SOPPLJixQpKqaZpQ0NDhWOSyWRra+ur\nr756wQUXUEoTicSUKVM2bdp00UUXgSm8/fbbmqYdPnyYUvroo4+uWbPmww8/bG1tpZS+/fbb\nqqru2bOHUvrAAw98/vOfr1M9IgiC1At5rAeWCIKMXwRBuPLKK1988cXjx48vXLhQVdVLLrnk\nlVde+fDDD6+44gpJkjZt2nT48OFly5YRQizLSqVSvIUQks1mV61a9YUvfOHKK68sTv93v/vd\npZdeGgwGCSHLli27/fbb3Ty55JJLRkZG3nrrrd///verV68OBAIeKcyYMWPKlCmEkEmTJg0O\nDhanM2PGjHnz5rE/fvWrX1WzshAEQcYBOLBDEMSLVatWPfzww8ePH1+5ciUhZMWKFb/5zW8O\nHTq0Zs0aQkggELjsssuefPLJwvHr1693WLZs2XL48OGrr7764YcfXrt2bVNTU+EnQfjz5je2\nbYui1+SQtWvX/tu//duWLVs2bNhgWZZHCrL858hGT91cR1EUt58QBEEaAJxjhyCIFytWrNi+\nffsrr7yyYsUK9t9XX331d7/73RVXXEEIWbJkycaNGwcGBgghr7322oMPPshbCCFnn332P/3T\nP1177bXXXXdd8XBqyZIlr776ai6XI4S8/PLLS5Ys8fDkuuuue/bZZ3O53IIFC3ylIIqirus4\njEMQ5EwA39ghCOJFNBpdsGDBgQMHOjs7CSGTJ0+2LGvevHnNzc2EkN7e3v/1v/7XFVdcEYvF\nLMvasGHDvHnzHJZEIsGS+s53vvOpT33qBz/4wV133cUsCxYsuPXWW5ctWxaJRCRJ2rBhg4cn\nHR0dCxYsuOSSS4qNfAqOb6+EkPb29jlz5vT29t57773VqhYEQZDxiYBPsQiCIAiCII0BfopF\nEARBEARpEHBghyAIgiAI0iDgwA5BEARBEKRBwIEdgiAIgiBIg4ADOwRBEARBkAYBB3YIgiAI\ngiANAg7sEARBEARBGgQc2CEIgiAIgjQIOLBDEARBEARpEHBghyAIgiAI0iDgwA5BEARBEKRB\nwIEdgiAIgiBIg4ADOwRBEARBkAYBB3YIgiAIgiANAg7sEARBEARBGgQc2CEIgiAIgjQIOLBD\nEARBEARpEHBghyAIgiAI0iDgwA5BEARBEKRBwIEdgiAIgiBIg4ADOwRBEARBkAYBB3YIgiAI\ngiANAg7sEARBEARBGgQc2CEIgiAIgjQIOLBDEARBEARpEHBghyAIgiAI0iDgwA5BEARBEKRB\nwIEdgiAIgiBIg4ADOwRBEARBkAYBB3YIgiAIgiANAg7sEARBEARBGgQc2CEIgiAIgjQIOLBD\nEARBEARpEHBghyAIgiAI0iDgwA5BEARBEKRBwIEdgiAIgiBIg4ADOwRBEARBkAYBB3YIgiAI\ngiANAg7sEARBEARBGgQc2CEIgiAIgjQIOLBDEARBEARpEHBghyAIgiAI0iDgwA5BEARBEKRB\nwIEdgiAIgiBIg4ADOwRBEARBkAYBB3YIgiAIgiANAg7sEARBEARBGgQc2CEIgiAIgjQIOLBD\nEARBEARpEHBghyAIgiAI0iDgwA5BEARBEKRBwIEdgiAIgiBIg4ADOwRBEARBkAYBB3YIgiAI\ngiANAg7sEARBEARBGgQc2CEIgiAIgjQIOLBDEARBEOT/b7cOZAAAAAAG+Vvf4yuKmBA7AIAJ\nsQMAmBA7AIAJsQMAmBA7AIAJsQMAmBA7AIAJsQMAmBA7AIAJsQMAmBA7AIAJsQMAmBA7AIAJ\nsQMAmBA7AIAJsQMAmBA7AIAJsQMAmBA7AIAJsQMAmBA7AIAJsQMAmBA7AIAJsQMAmBA7AIAJ\nsQMAmBA7AIAJsQMAmBA7AIAJsQMAmBA7AIAJsQMAmBA7AIAJsQMAmBA7AIAJsQMAmBA7AIAJ\nsQMAmBA7AIAJsQMAmBA7AIAJsQMAmBA7AIAJsQMAmBA7AIAJsQMAmBA7AIAJsQMAmBA7AIAJ\nsQMAmBA7AIAJsQMAmBA7AIAJsQMAmBA7AIAJsQMAmBA7AIAJsQMAmBA7AIAJsQMAmBA7AIAJ\nsQMAmBA7AIAJsQMAmBA7AIAJsQMAmBA7AIAJsQMAmBA7AIAJsQMAmBA7AIAJsQMAmBA7AIAJ\nsQMAmBA7AIAJsQMAmBA7AIAJsQMAmBA7AIAJsQMAmBA7AIAJsQMAmBA7AIAJsQMAmBA7AIAJ\nsQMAmBA7AIAJsQMAmBA7AIAJsQMAmBA7AIAJsQMAmBA7AIAJsQMAmBA7AIAJsQMAmBA7AIAJ\nsQMAmBA7AIAJsQMAmBA7AIAJsQMAmBA7AIAJsQMAmBA7AIAJsQMAmBA7AIAJsQMAmBA7AIAJ\nsQMAmBA7AIAJsQMAmBA7AIAJsQMAmBA7AIAJsQMAmBA7AIAJsQMAmBA7AIAJsQMAmBA7AIAJ\nsQMAmBA7AIAJsQMAmBA7AIAJsQMAmBA7AIAJsQMAmBA7AIAJsQMAmBA7AIAJsQMAmBA7AIAJ\nsQMAmBA7AIAJsQMAmBA7AIAJsQMAmBA7AIAJsQMAmAjvEhbj34xamgAAAABJRU5ErkJggg=="
          },
          "metadata": {
            "image/png": {
              "width": 420,
              "height": 420
            }
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "**Assistant:** This R code is creating a time series calendar heatmap for a dataset called \"myTable\" that contains a column called \"THI\" (Total Health Index) and a column called \"Date\".\n",
        "\n",
        "Here's a breakdown of the code:\n",
        "\n",
        "1. `myTitle <- paste(\"THI @\", myCity)`: This line creates a string variable called \"myTitle\" that contains the text \"THI @\" followed by the value of the \"myCity\" variable.\n",
        "2. `xts_dataset <- xts(myTable[,'THI'], order.by = as.Date(myTable$Date))`: This line creates an xts object called \"xts_dataset\" from the \"THI\" column of the \"myTable\" dataset. The \"order.by\" argument specifies the date column of the dataset, which is used to order the data in the xts object.\n",
        "3. `xts_heatmap(xts_dataset)`: This line creates a heatmap of the xts object using the `xts_heatmap()` function.\n",
        "4. `labs(title=myTitle)`: This line adds a title to the heatmap using the `labs()` function. The title is set to the value of the \"myTitle\" variable.\n",
        "5. `coord_fixed(1)`: This line sets the coordinate system of the heatmap to fixed, which means that the x-axis and y-axis are not scaled to the data.\n",
        "6. `theme_minimal(base_size=7)`: This line sets the theme of the heatmap to minimal, which means that the background and axis labels are not displayed. The `base_size` argument sets the font size of the axis labels to 7."
      ],
      "metadata": {
        "id": "6giTcWXfqM7_"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "# Plot THI time series dynamics\n",
        "ggplot2::autoplot(xts_dataset, main=myTitle, ylab=\"THI\", xlab=\"Time\")"
      ],
      "metadata": {
        "id": "oFtUBmKfqR53"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "source": [
        "**Assistant:** This R language code is using the `ggplot2` package to create a time series plot of the THI (Temperature Humidity Index) data in the `xts_dataset`.\n",
        "\n",
        "Here's a breakdown of the code:\n",
        "\n",
        "* `ggplot2::autoplot(xts_dataset, main=myTitle, ylab=\"THI\", xlab=\"Time\")`: This line of code is using the `autoplot()` function from the `ggplot2` package to create a time series plot of the THI data in the `xts_dataset`. The `main` argument specifies the title of the plot, and the `ylab` and `xlab` arguments specify the labels for the y-axis and x-axis, respectively.\n",
        "* `xts_dataset`: This is the name of the dataset that contains the THI data.\n",
        "* `myTitle`: This is the title of the plot.\n",
        "* `THI`: This is the label for the y-axis.\n",
        "* `Time`: This is the label for the x-axis.\n",
        "\n",
        "Overall, this code is creating a time series plot of the THI data in the `xts_dataset` with the specified title, y-axis label, and x-axis label."
      ],
      "metadata": {
        "id": "sJnl8lFlqOrQ"
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "## 7. Export results to .html"
      ],
      "metadata": {
        "id": "v8a_lUDMqiGK"
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "After running all notebook blocks, save .ipynb and use *nbconvert* to get .html\n",
        "\n",
        "\n",
        "1. Save notebook with results: **File / Save (Ctrl+S)**\n",
        "2. Download notebook: **File / Download / Download .ipynb**\n",
        "3. Upload .ipynb back to Google Colab: **File / Upload notebook**\n",
        "4. Run the following command-line: *jupyter nbconvert --to html*\n"
      ],
      "metadata": {
        "id": "S-AM1pjPqmCm"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "#system(\"jupyter nbconvert --to html ASSIST_Air_Data_Rscript.ipynb\")"
      ],
      "metadata": {
        "id": "NAKeJx6JqdI9"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "source": [
        "**Assistant:** This R language code is using the `system()` function to execute a command in the operating system.\n",
        "\n",
        "The command being executed is:\n",
        "\n",
        "`jupyter nbconvert --to html ASSIST_Air_Data_Rscript.ipynb`\n",
        "\n",
        "This command is telling Jupyter Notebook to convert the file `ASSIST_Air_Data_Rscript.ipynb` to HTML format using the `nbconvert` tool. The `--to html` option tells `nbconvert` to output the converted file as an HTML file.\n",
        "\n",
        "The `system()` function is a built-in function in R that allows you to execute operating system commands. It takes a string as an argument, which is the command to be executed, and returns the output of the command as a character string. In this case, the output of the command is the HTML file that is generated by `nbconvert`."
      ],
      "metadata": {
        "id": "HWmM_gVcqpld"
      }
    }
  ]
}