{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "provenance": []
    },
    "kernelspec": {
      "name": "ir",
      "display_name": "R"
    },
    "language_info": {
      "name": "R"
    }
  },
  "cells": [
    {
      "cell_type": "code",
      "execution_count": 1,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "L5TWBBaqt_WC",
        "outputId": "27a3f9a0-a8f7-4d3f-f7a1-86d3fd3900cb"
      },
      "outputs": [
        {
          "output_type": "stream",
          "name": "stderr",
          "text": [
            "Installing package into ‘/usr/local/lib/R/site-library’\n",
            "(as ‘lib’ is unspecified)\n",
            "\n",
            "── \u001b[1mAttaching core tidyverse packages\u001b[22m ──────────────────────── tidyverse 2.0.0 ──\n",
            "\u001b[32m✔\u001b[39m \u001b[34mdplyr    \u001b[39m 1.1.4     \u001b[32m✔\u001b[39m \u001b[34mreadr    \u001b[39m 2.1.6\n",
            "\u001b[32m✔\u001b[39m \u001b[34mforcats  \u001b[39m 1.0.1     \u001b[32m✔\u001b[39m \u001b[34mstringr  \u001b[39m 1.6.0\n",
            "\u001b[32m✔\u001b[39m \u001b[34mggplot2  \u001b[39m 4.0.1     \u001b[32m✔\u001b[39m \u001b[34mtibble   \u001b[39m 3.3.1\n",
            "\u001b[32m✔\u001b[39m \u001b[34mlubridate\u001b[39m 1.9.4     \u001b[32m✔\u001b[39m \u001b[34mtidyr    \u001b[39m 1.3.2\n",
            "\u001b[32m✔\u001b[39m \u001b[34mpurrr    \u001b[39m 1.2.1     \n",
            "── \u001b[1mConflicts\u001b[22m ────────────────────────────────────────── tidyverse_conflicts() ──\n",
            "\u001b[31m✖\u001b[39m \u001b[34mdplyr\u001b[39m::\u001b[32mfilter()\u001b[39m masks \u001b[34mstats\u001b[39m::filter()\n",
            "\u001b[31m✖\u001b[39m \u001b[34mdplyr\u001b[39m::\u001b[32mlag()\u001b[39m    masks \u001b[34mstats\u001b[39m::lag()\n",
            "\u001b[36mℹ\u001b[39m Use the conflicted package (\u001b[3m\u001b[34m<http://conflicted.r-lib.org/>\u001b[39m\u001b[23m) to force all conflicts to become errors\n"
          ]
        }
      ],
      "source": [
        "install.packages(\"tidyverse\")\n",
        "library(tidyverse)"
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "library(ggplot2)\n",
        "\n",
        "df <- data.frame(\n",
        "  x = c('A', 'B', 'C', 'D', 'E', 'F'),\n",
        "  y = c(4, 6, 2, 9, 7, 3)\n",
        ")\n",
        "\n",
        "ggplot(df, aes(x, y, fill = x)) +\n",
        "  geom_bar(stat = \"identity\")\n"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 437
        },
        "id": "XWx5ZojDuAFl",
        "outputId": "e1f20f8d-f0ab-42ed-ffa1-8605e620ad64"
      },
      "execution_count": 2,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "plot without title"
            ],
            "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0gAAANICAMAAADKOT/pAAACx1BMVEUAAAAAujgAv8QBAQEC\nAgIDAwMEBAQFBQUGBgYICAgJCQkKCgoLCwsMDAwNDQ0ODg4PDw8RERESEhIUFBQVFRUWFhYX\nFxcZGRkbGxscHBwdHR0eHh4fHx8hISEjIyMkJCQlJSUnJycoKCgpKSkrKyssLCwuLi4xMTEz\nMzM0NDQ1NTU4ODg5OTk6Ojo8PDw9PT0+Pj5AQEBBQUFCQkJDQ0NERERFRUVHR0dISEhJSUlL\nS0tNTU1OTk5PT09QUFBRUVFTU1NUVFRVVVVWVlZXV1dYWFhZWVlaWlpbW1tcXFxdXV1eXl5f\nX19gYGBhYWFhnP9iYmJjY2NkZGRlZWVmZmZnZ2doaGhpaWlqampra2tsbGxtbW1ubm5vb29w\ncHBxcXFycnJzc3N0dHR2dnZ3d3d4eHh5eXl6enp7e3t8fHx9fX1/f3+AgICBgYGCgoKDg4OE\nhISFhYWGhoaHh4eIiIiJiYmKioqLi4uMjIyNjY2Ojo6Pj4+QkJCRkZGSkpKTk5OUlJSVlZWW\nlpaXl5eYmJiZmZmampqbm5ucnJydnZ2enp6fn5+goKChoaGioqKjo6OkpKSlpaWmpqanp6eo\nqKipqamqqqqrq6usrKytra2vr6+wsLCxsbGysrKzs7O0tLS1tbW2tra3nwC3t7e4uLi5ubm6\nurq7u7u8vLy9vb2+vr6/v7/AwMDBwcHCwsLDw8PExMTFxcXGxsbHx8fIyMjJycnKysrLy8vM\nzMzNzc3Ozs7Pz8/Q0NDR0dHS0tLT09PU1NTV1dXW1tbX19fY2NjZ2dna2trb29vd3d3e3t7f\n39/g4ODh4eHi4uLj4+Pk5OTl5eXm5ubn5+fo6Ojp6enq6urr6+vs7Ozt7e3u7u7v7+/w8PDx\n8fHy8vLz8/P09PT1ZOP19fX29vb39/f4dm34+Pj5+fn6+vr7+/v8/Pz9/f3+/v7///+mLlDk\nAAAACXBIWXMAABJ0AAASdAHeZh94AAAgAElEQVR4nO3d/59ldX3Y8bGAUEuiiamm1to2/bbV\n1KbU2NhdRDZUvskWQ1ohxmDTjbIVS1kNXySCsSmJkZgGq8YkYL9QaEiwKUrVhhisIiCwICAB\n91vZzX6bOX9E585c+Jw98Nn3mfv5nDPj7vP1w9w7DPN+f87d+2Tu7PKYnWskFTe32geQjoZA\nkioEklQhkKQKgSRVCCSpQiBJFQJJqlA5pKcL2z6/t3TESpo/MOa2A4fG3LZv/rsjbtszv3PE\nbbvnd5eOeKaCl2zlkJ4s7OlmX+mIldQcHHPboYUxt+1vnhpx255m+4jbdjW7ykcMGEiDBlKt\nQIoCqVogBSMGDKRBA6lWIEWBVC2QghEDBtKggVQrkKJAqhZIwYgBA2nQQKoVSFEgVQukYMSA\ngTRoINUKpCiQqgVSMGLAQBo0kGoFUhRI1QIpGDFgIA0aSLUCKQqkaoEUjBgwkAYNpFqBFAVS\ntUAKRgwYSIMGUq1AigKpWiAFIwYMpEEDqVYgRYFULZCCEQMG0qCBVCuQokCqFkjBiAEDadBA\nqhVIUSBVC6RgxICBNGgg1QqkKJCqBVIwYsBAGjSQagVSFEjVAikYMWAgDRpItQIpCqRqgRSM\nGDCQBg2kWoEUBVK1QApGDBhIgwZSrUCKAqlaIAUjBgykQSuD9BeGr+B0ILUDadBAqhVIUSBl\nAykFUhRI2UBKgRQFUjaQUiBFgZQNpBRIUSBlAykFUhRI2UBKgRQFUjaQUiBFgZQNpBRIUSBl\nAykFUhRI2UBKgRQFUjaQUiBFgZQNpBRIUSBlAykFUhRI2UBKgRQFUjaQUiBFgZQNpNTRD+m7\nhe1o9peOWEnNoTG3HVoo+ewRIBWcbm+zq+TiVtgzzTOlI3ZX8JKtHNK+wvY3h0pHrKRmYcxt\nC0UPzwiQCk53qDlQcnEr7GBzsHhGBS/ZvLQbNC/tanX0v7QrvTyQsoGUAikKpGwgpUCKAikb\nSCmQokDKBlIKpCiQsoGUAikKpGwgpUCKAikbSCmQokDKBlIKpCiQsoGUAikKpGwgpUCKAikb\nSCmQokDKBlIKpCiQsoGUAikKpGwgpUCKAikbSCmQokDKBlIKpCiQsoGUAikKpGwgpUCKAikb\nSCmQokDKBlIKpCiQsoGUAikKpGwgpUCKAikbSCmQokDKBlIKpCiQsoGUAikKpGwgpUCKAikb\nSCmQokDKBlIKpCiQsoGUAikKpGwgpUCKAikbSCmQokDKBlIKpCiQsoGUAikKpGwgpUCKAikb\nSCmQokDKBlIKpCiQsoGUAikKpGwgpUCKAikbSCmQokDKBlIKpCiQsoGUAikKpGwgpUCKAikb\nSCmQokDKBlIKpCiQsoGUAikKpGwgpUCKAikbSCmQokDKBlIKpCiQsoGUAikKpGwgpUCKAikb\nSCmQokDKBlIKpCiQsoGUAikKpGwgpUCKAikbSCmQokDKBlIKpCiQsoGUAikKpGwgpUCKAikb\nSCmQokDKBlIKpCiQsoGUAikKpGwgpUCKAikbSCmQokDKBlIKpCiQsoGUAikKpGwgpUCKAikb\nSCmQokDKBlIKpCiQsoGUAikKpGwgpUCKAikbSCmQokDKBlIKpCiQsoGUAikKpGwgpUCKAikb\nSCmQokDKBlIKpCiQsoGUAikKpGwgpUCKAikbSCmQokDKBlIKpCiQsoGUAikKpGwgpUCKAikb\nSCmQokDKBlIKpCiQsoGUAikKpGwgpUCKAikbSCmQokDKBlIKpCiQsoGUAikKpGwgpUCKAikb\nSCmQokDKBlLqqID01fVLfW7pnXdO7m5MHyy9PJCygZQ6KiAdmBzjaxsfXnpn082L7zyVPlh6\neSBlAyl1VEBaasuNy7enf+nwf156eSBlAyl11ED6/NsPLt0eWH/tu87f+sjS/a/cdddd920v\nbGdzoHTESmoOjbltfqHks0eAVHC6fc3ukotbYXuaPaUjnhmG0HJ9Ic3/y9uW72w/50P33nvp\nObsn99+4bt269wx0MDXNCJBW+xLH7MCQw/tC+vx5h1rv7dl46+Tm16699tpb9hS2tzlUOmIl\nNfNjbltoSj57BEgFpzvY7Cu5uBW2vzlQOmJvfT6pvpDef/1h715443N3S1+5+h4p2wiQCk7n\ne6R2PSHtfvPd03sPXrf4vdLejbc/96HSywMpG0ipowTS3eufmNzcelOz88xrHntk66Z9z32o\n9PJAygZS6iiB9Acbln7P7ootTXP/ljPOvuzx9KHSywMpG0ipowTSESq9PJCygZQCKQqkbCCl\nQIoCKRtIKZCiQMoGUgqkKJCygZQCKQqkbCClQIoCKRtIKZCiQMoGUgqkKJCygZQCKQqkbCCl\nQIoCKRtIKZCiQMoGUgqkKJCygZQCKQqkbCClQIoCKRtIKZCiQMoGUgqkKJCygZQCKQqkbCCl\nQIoCKRtIKZCiQMoGUgqkKJCygZQCKQqkbCClQIoCKRtIKZCiQMoGUgqkKJCygZQCKQqkbCCl\nQIoCKRtIKZCiQMoGUgqkKJCygZQCKQqkbCClQIoCKRtIKZCiQMoGUgqkKJCygZQCKQqkbCCl\nQIoCKdu4kP758BU8FiBFgZQNpBRIUSBlAykFUhRI2UBKgRQFUjaQUiBFgZQNpBRIUSBlAykF\n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"
          },
          "metadata": {
            "image/png": {
              "width": 420,
              "height": 420
            }
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "library(dplyr)\n",
        "\n",
        "print(starwars %>% filter(species == \"Droid\"))"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "pQ4RbZFGyK6O",
        "outputId": "20f6164b-d484-476b-ff09-100444b1ac0f"
      },
      "execution_count": 8,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "\u001b[90m# A tibble: 6 × 14\u001b[39m\n",
            "  name   height  mass hair_color skin_color  eye_color birth_year sex   gender  \n",
            "  \u001b[3m\u001b[90m<chr>\u001b[39m\u001b[23m   \u001b[3m\u001b[90m<int>\u001b[39m\u001b[23m \u001b[3m\u001b[90m<dbl>\u001b[39m\u001b[23m \u001b[3m\u001b[90m<chr>\u001b[39m\u001b[23m      \u001b[3m\u001b[90m<chr>\u001b[39m\u001b[23m       \u001b[3m\u001b[90m<chr>\u001b[39m\u001b[23m          \u001b[3m\u001b[90m<dbl>\u001b[39m\u001b[23m \u001b[3m\u001b[90m<chr>\u001b[39m\u001b[23m \u001b[3m\u001b[90m<chr>\u001b[39m\u001b[23m   \n",
            "\u001b[90m1\u001b[39m C-3PO     167    75 \u001b[31mNA\u001b[39m         gold        yellow           112 none  masculi…\n",
            "\u001b[90m2\u001b[39m R2-D2      96    32 \u001b[31mNA\u001b[39m         white, blue red               33 none  masculi…\n",
            "\u001b[90m3\u001b[39m R5-D4      97    32 \u001b[31mNA\u001b[39m         white, red  red               \u001b[31mNA\u001b[39m none  masculi…\n",
            "\u001b[90m4\u001b[39m IG-88     200   140 none       metal       red               15 none  masculi…\n",
            "\u001b[90m5\u001b[39m R4-P17     96    \u001b[31mNA\u001b[39m none       silver, red red, blue         \u001b[31mNA\u001b[39m none  feminine\n",
            "\u001b[90m6\u001b[39m BB8        \u001b[31mNA\u001b[39m    \u001b[31mNA\u001b[39m none       none        black             \u001b[31mNA\u001b[39m none  masculi…\n",
            "\u001b[90m# ℹ 5 more variables: homeworld <chr>, species <chr>, films <list>,\u001b[39m\n",
            "\u001b[90m#   vehicles <list>, starships <list>\u001b[39m\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "library(tidyr)\n",
        "\n",
        "n = 10\n",
        "tidy_dataframe = data.frame(\n",
        "                    S.No = c(1:n),\n",
        "                    Group.1 = c(23, 345, 76, 212, 88,\n",
        "                                199, 72, 35, 90, 265),\n",
        "                    Group.2 = c(117, 89, 66, 334, 90,\n",
        "                            101, 178, 233, 45, 200),\n",
        "                    Group.3 = c(29, 101, 239, 289, 176,\n",
        "                                320, 89, 109, 199, 56))\n",
        "\n",
        "head(tidy_dataframe)\n",
        "\n",
        "long <- tidy_dataframe %>%\n",
        "            gather(Group, Frequency,\n",
        "                Group.1:Group.3)\n",
        "\n",
        "head(long)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 556
        },
        "id": "c8hyDGlAzm4q",
        "outputId": "0b8c7fb0-c7d4-4b9d-d3ee-865b0875097a"
      },
      "execution_count": 9,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/html": [
              "<table class=\"dataframe\">\n",
              "<caption>A data.frame: 6 × 4</caption>\n",
              "<thead>\n",
              "\t<tr><th></th><th scope=col>S.No</th><th scope=col>Group.1</th><th scope=col>Group.2</th><th scope=col>Group.3</th></tr>\n",
              "\t<tr><th></th><th scope=col>&lt;int&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><th scope=row>1</th><td>1</td><td> 23</td><td>117</td><td> 29</td></tr>\n",
              "\t<tr><th scope=row>2</th><td>2</td><td>345</td><td> 89</td><td>101</td></tr>\n",
              "\t<tr><th scope=row>3</th><td>3</td><td> 76</td><td> 66</td><td>239</td></tr>\n",
              "\t<tr><th scope=row>4</th><td>4</td><td>212</td><td>334</td><td>289</td></tr>\n",
              "\t<tr><th scope=row>5</th><td>5</td><td> 88</td><td> 90</td><td>176</td></tr>\n",
              "\t<tr><th scope=row>6</th><td>6</td><td>199</td><td>101</td><td>320</td></tr>\n",
              "</tbody>\n",
              "</table>\n"
            ],
            "text/markdown": "\nA data.frame: 6 × 4\n\n| <!--/--> | S.No &lt;int&gt; | Group.1 &lt;dbl&gt; | Group.2 &lt;dbl&gt; | Group.3 &lt;dbl&gt; |\n|---|---|---|---|---|\n| 1 | 1 |  23 | 117 |  29 |\n| 2 | 2 | 345 |  89 | 101 |\n| 3 | 3 |  76 |  66 | 239 |\n| 4 | 4 | 212 | 334 | 289 |\n| 5 | 5 |  88 |  90 | 176 |\n| 6 | 6 | 199 | 101 | 320 |\n\n",
            "text/latex": "A data.frame: 6 × 4\n\\begin{tabular}{r|llll}\n  & S.No & Group.1 & Group.2 & Group.3\\\\\n  & <int> & <dbl> & <dbl> & <dbl>\\\\\n\\hline\n\t1 & 1 &  23 & 117 &  29\\\\\n\t2 & 2 & 345 &  89 & 101\\\\\n\t3 & 3 &  76 &  66 & 239\\\\\n\t4 & 4 & 212 & 334 & 289\\\\\n\t5 & 5 &  88 &  90 & 176\\\\\n\t6 & 6 & 199 & 101 & 320\\\\\n\\end{tabular}\n",
            "text/plain": [
              "  S.No Group.1 Group.2 Group.3\n",
              "1 1     23     117      29    \n",
              "2 2    345      89     101    \n",
              "3 3     76      66     239    \n",
              "4 4    212     334     289    \n",
              "5 5     88      90     176    \n",
              "6 6    199     101     320    "
            ]
          },
          "metadata": {}
        },
        {
          "output_type": "display_data",
          "data": {
            "text/html": [
              "<table class=\"dataframe\">\n",
              "<caption>A data.frame: 6 × 3</caption>\n",
              "<thead>\n",
              "\t<tr><th></th><th scope=col>S.No</th><th scope=col>Group</th><th scope=col>Frequency</th></tr>\n",
              "\t<tr><th></th><th scope=col>&lt;int&gt;</th><th scope=col>&lt;chr&gt;</th><th scope=col>&lt;dbl&gt;</th></tr>\n",
              "</thead>\n",
              "<tbody>\n",
              "\t<tr><th scope=row>1</th><td>1</td><td>Group.1</td><td> 23</td></tr>\n",
              "\t<tr><th scope=row>2</th><td>2</td><td>Group.1</td><td>345</td></tr>\n",
              "\t<tr><th scope=row>3</th><td>3</td><td>Group.1</td><td> 76</td></tr>\n",
              "\t<tr><th scope=row>4</th><td>4</td><td>Group.1</td><td>212</td></tr>\n",
              "\t<tr><th scope=row>5</th><td>5</td><td>Group.1</td><td> 88</td></tr>\n",
              "\t<tr><th scope=row>6</th><td>6</td><td>Group.1</td><td>199</td></tr>\n",
              "</tbody>\n",
              "</table>\n"
            ],
            "text/markdown": "\nA data.frame: 6 × 3\n\n| <!--/--> | S.No &lt;int&gt; | Group &lt;chr&gt; | Frequency &lt;dbl&gt; |\n|---|---|---|---|\n| 1 | 1 | Group.1 |  23 |\n| 2 | 2 | Group.1 | 345 |\n| 3 | 3 | Group.1 |  76 |\n| 4 | 4 | Group.1 | 212 |\n| 5 | 5 | Group.1 |  88 |\n| 6 | 6 | Group.1 | 199 |\n\n",
            "text/latex": "A data.frame: 6 × 3\n\\begin{tabular}{r|lll}\n  & S.No & Group & Frequency\\\\\n  & <int> & <chr> & <dbl>\\\\\n\\hline\n\t1 & 1 & Group.1 &  23\\\\\n\t2 & 2 & Group.1 & 345\\\\\n\t3 & 3 & Group.1 &  76\\\\\n\t4 & 4 & Group.1 & 212\\\\\n\t5 & 5 & Group.1 &  88\\\\\n\t6 & 6 & Group.1 & 199\\\\\n\\end{tabular}\n",
            "text/plain": [
              "  S.No Group   Frequency\n",
              "1 1    Group.1  23      \n",
              "2 2    Group.1 345      \n",
              "3 3    Group.1  76      \n",
              "4 4    Group.1 212      \n",
              "5 5    Group.1  88      \n",
              "6 6    Group.1 199      "
            ]
          },
          "metadata": {}
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "\n",
        "library(stringr)\n",
        "\n",
        "str_length(\"GeeksforGeeks\")"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 34
        },
        "id": "Y0t1tPdm2cRa",
        "outputId": "2beb9fdc-2277-4ecf-d35d-5533aaae1b2d"
      },
      "execution_count": 11,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/html": [
              "13"
            ],
            "text/markdown": "13",
            "text/latex": "13",
            "text/plain": [
              "[1] 13"
            ]
          },
          "metadata": {}
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "library(forcats)\n",
        "\n",
        "head(starwars %>% filter(!is.na(species))\n",
        "           %>% count(species, sort = TRUE))"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 287
        },
        "id": "elgOQWbr3ULn",
        "outputId": "a5ef1cbf-59b9-4b11-c00b-08a20a0a1b8b"
      },
      "execution_count": 12,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/html": [
              "<table class=\"dataframe\">\n",
              "<caption>A tibble: 6 × 2</caption>\n",
              "<thead>\n",
              "\t<tr><th scope=col>species</th><th scope=col>n</th></tr>\n",
              "\t<tr><th scope=col>&lt;chr&gt;</th><th scope=col>&lt;int&gt;</th></tr>\n",
              "</thead>\n",
              "<tbody>\n",
              "\t<tr><td>Human   </td><td>35</td></tr>\n",
              "\t<tr><td>Droid   </td><td> 6</td></tr>\n",
              "\t<tr><td>Gungan  </td><td> 3</td></tr>\n",
              "\t<tr><td>Kaminoan</td><td> 2</td></tr>\n",
              "\t<tr><td>Mirialan</td><td> 2</td></tr>\n",
              "\t<tr><td>Twi'lek </td><td> 2</td></tr>\n",
              "</tbody>\n",
              "</table>\n"
            ],
            "text/markdown": "\nA tibble: 6 × 2\n\n| species &lt;chr&gt; | n &lt;int&gt; |\n|---|---|\n| Human    | 35 |\n| Droid    |  6 |\n| Gungan   |  3 |\n| Kaminoan |  2 |\n| Mirialan |  2 |\n| Twi'lek  |  2 |\n\n",
            "text/latex": "A tibble: 6 × 2\n\\begin{tabular}{ll}\n species & n\\\\\n <chr> & <int>\\\\\n\\hline\n\t Human    & 35\\\\\n\t Droid    &  6\\\\\n\t Gungan   &  3\\\\\n\t Kaminoan &  2\\\\\n\t Mirialan &  2\\\\\n\t Twi'lek  &  2\\\\\n\\end{tabular}\n",
            "text/plain": [
              "  species  n \n",
              "1 Human    35\n",
              "2 Droid     6\n",
              "3 Gungan    3\n",
              "4 Kaminoan  2\n",
              "5 Mirialan  2\n",
              "6 Twi'lek   2"
            ]
          },
          "metadata": {}
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "library(tibble)\n",
        "data <- data.frame(a = 1:3, b = letters[1:3],\n",
        "                   c = Sys.Date() - 1:3)\n",
        "print(data)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "0lszvtn334C6",
        "outputId": "601a28a3-d044-42c7-c68c-a082987df1cf"
      },
      "execution_count": 14,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "  a b          c\n",
            "1 1 a 2026-02-18\n",
            "2 2 b 2026-02-17\n",
            "3 3 c 2026-02-16\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "library(purrr)\n",
        "\n",
        "list(1, 2, 3) %>%\n",
        "  map(~ .x * 2)\n"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 97
        },
        "id": "8w6r3dcD4nYn",
        "outputId": "a9e5aff4-7232-45b3-be5c-384dd70953b9"
      },
      "execution_count": 15,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/html": [
              "<ol>\n",
              "\t<li>2</li>\n",
              "\t<li>4</li>\n",
              "\t<li>6</li>\n",
              "</ol>\n"
            ],
            "text/markdown": "1. 2\n2. 4\n3. 6\n\n\n",
            "text/latex": "\\begin{enumerate}\n\\item 2\n\\item 4\n\\item 6\n\\end{enumerate}\n",
            "text/plain": [
              "[[1]]\n",
              "[1] 2\n",
              "\n",
              "[[2]]\n",
              "[1] 4\n",
              "\n",
              "[[3]]\n",
              "[1] 6\n"
            ]
          },
          "metadata": {}
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [],
      "metadata": {
        "id": "Mpm28kwM4u1O"
      },
      "execution_count": null,
      "outputs": []
    }
  ]
}