{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Tidy Data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- Each column = one variable (convention is to have \"fixed\" columns first)\n", "- Each row = one observation\n", "- Each cell = one value" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Registered S3 methods overwritten by 'ggplot2':\n", " method from \n", " [.quosures rlang\n", " c.quosures rlang\n", " print.quosures rlang\n", "── \u001b[1mAttaching packages\u001b[22m ─────────────────────────────────────── tidyverse 1.2.1 ──\n", "\u001b[32m✔\u001b[39m \u001b[34mggplot2\u001b[39m 3.1.1 \u001b[32m✔\u001b[39m \u001b[34mpurrr \u001b[39m 0.3.2\n", "\u001b[32m✔\u001b[39m \u001b[34mtibble \u001b[39m 2.1.2 \u001b[32m✔\u001b[39m \u001b[34mdplyr \u001b[39m 0.8.1\n", "\u001b[32m✔\u001b[39m \u001b[34mtidyr \u001b[39m 0.8.3 \u001b[32m✔\u001b[39m \u001b[34mstringr\u001b[39m 1.4.0\n", "\u001b[32m✔\u001b[39m \u001b[34mreadr \u001b[39m 1.3.1 \u001b[32m✔\u001b[39m \u001b[34mforcats\u001b[39m 0.4.0\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" ] } ], "source": [ "library(tidyverse)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Data set" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "n <- 4\n", "df <- data.frame(\n", " pid = c(1,3,4,5),\n", " desc = paste(sample(c('M', 'F'), n, replace=T),\n", " '-', \n", " sample(10:70, n),\n", " sep=''),\n", " visit1 = rpois(n, lambda = 20),\n", " visit2 = rpois(n, lambda=10)\n", ")" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "df[3,3] = NA" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
A data.frame: 4 × 4
piddescvisit1visit2
<dbl><fct><int><int>
1F-2017 6
3F-6124 9
4F-48NA10
5M-571411
\n" ], "text/latex": [ "A data.frame: 4 × 4\n", "\\begin{tabular}{r|llll}\n", " pid & desc & visit1 & visit2\\\\\n", " & & & \\\\\n", "\\hline\n", "\t 1 & F-20 & 17 & 6\\\\\n", "\t 3 & F-61 & 24 & 9\\\\\n", "\t 4 & F-48 & NA & 10\\\\\n", "\t 5 & M-57 & 14 & 11\\\\\n", "\\end{tabular}\n" ], "text/markdown": [ "\n", "A data.frame: 4 × 4\n", "\n", "| pid <dbl> | desc <fct> | visit1 <int> | visit2 <int> |\n", "|---|---|---|---|\n", "| 1 | F-20 | 17 | 6 |\n", "| 3 | F-61 | 24 | 9 |\n", "| 4 | F-48 | NA | 10 |\n", "| 5 | M-57 | 14 | 11 |\n", "\n" ], "text/plain": [ " pid desc visit1 visit2\n", "1 1 F-20 17 6 \n", "2 3 F-61 24 9 \n", "3 4 F-48 NA 10 \n", "4 5 M-57 14 11 " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Gather" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
A data.frame: 8 × 4
piddescvisitmeasurement
<dbl><fct><chr><int>
1F-20visit117
3F-61visit124
4F-48visit1NA
5M-57visit114
1F-20visit2 6
3F-61visit2 9
4F-48visit210
5M-57visit211
\n" ], "text/latex": [ "A data.frame: 8 × 4\n", "\\begin{tabular}{r|llll}\n", " pid & desc & visit & measurement\\\\\n", " & & & \\\\\n", "\\hline\n", "\t 1 & F-20 & visit1 & 17\\\\\n", "\t 3 & F-61 & visit1 & 24\\\\\n", "\t 4 & F-48 & visit1 & NA\\\\\n", "\t 5 & M-57 & visit1 & 14\\\\\n", "\t 1 & F-20 & visit2 & 6\\\\\n", "\t 3 & F-61 & visit2 & 9\\\\\n", "\t 4 & F-48 & visit2 & 10\\\\\n", "\t 5 & M-57 & visit2 & 11\\\\\n", "\\end{tabular}\n" ], "text/markdown": [ "\n", "A data.frame: 8 × 4\n", "\n", "| pid <dbl> | desc <fct> | visit <chr> | measurement <int> |\n", "|---|---|---|---|\n", "| 1 | F-20 | visit1 | 17 |\n", "| 3 | F-61 | visit1 | 24 |\n", "| 4 | F-48 | visit1 | NA |\n", "| 5 | M-57 | visit1 | 14 |\n", "| 1 | F-20 | visit2 | 6 |\n", "| 3 | F-61 | visit2 | 9 |\n", "| 4 | F-48 | visit2 | 10 |\n", "| 5 | M-57 | visit2 | 11 |\n", "\n" ], "text/plain": [ " pid desc visit measurement\n", "1 1 F-20 visit1 17 \n", "2 3 F-61 visit1 24 \n", "3 4 F-48 visit1 NA \n", "4 5 M-57 visit1 14 \n", "5 1 F-20 visit2 6 \n", "6 3 F-61 visit2 9 \n", "7 4 F-48 visit2 10 \n", "8 5 M-57 visit2 11 " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "df %>% \n", "gather(visit, measurement, -pid, -desc)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
A data.frame: 8 × 4
piddescvisitmeasurement
<dbl><fct><chr><int>
1F-20visit117
3F-61visit124
4F-48visit1NA
5M-57visit114
1F-20visit2 6
3F-61visit2 9
4F-48visit210
5M-57visit211
\n" ], "text/latex": [ "A data.frame: 8 × 4\n", "\\begin{tabular}{r|llll}\n", " pid & desc & visit & measurement\\\\\n", " & & & \\\\\n", "\\hline\n", "\t 1 & F-20 & visit1 & 17\\\\\n", "\t 3 & F-61 & visit1 & 24\\\\\n", "\t 4 & F-48 & visit1 & NA\\\\\n", "\t 5 & M-57 & visit1 & 14\\\\\n", "\t 1 & F-20 & visit2 & 6\\\\\n", "\t 3 & F-61 & visit2 & 9\\\\\n", "\t 4 & F-48 & visit2 & 10\\\\\n", "\t 5 & M-57 & visit2 & 11\\\\\n", "\\end{tabular}\n" ], "text/markdown": [ "\n", "A data.frame: 8 × 4\n", "\n", "| pid <dbl> | desc <fct> | visit <chr> | measurement <int> |\n", "|---|---|---|---|\n", "| 1 | F-20 | visit1 | 17 |\n", "| 3 | F-61 | visit1 | 24 |\n", "| 4 | F-48 | visit1 | NA |\n", "| 5 | M-57 | visit1 | 14 |\n", "| 1 | F-20 | visit2 | 6 |\n", "| 3 | F-61 | visit2 | 9 |\n", "| 4 | F-48 | visit2 | 10 |\n", "| 5 | M-57 | visit2 | 11 |\n", "\n" ], "text/plain": [ " pid desc visit measurement\n", "1 1 F-20 visit1 17 \n", "2 3 F-61 visit1 24 \n", "3 4 F-48 visit1 NA \n", "4 5 M-57 visit1 14 \n", "5 1 F-20 visit2 6 \n", "6 3 F-61 visit2 9 \n", "7 4 F-48 visit2 10 \n", "8 5 M-57 visit2 11 " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "df %>% \n", "gather(key=visit, value=measurement, visit1:visit2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Separate" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
A data.frame: 8 × 5
pidsexagevisitmeasurement
<dbl><chr><chr><chr><int>
1F20visit117
3F61visit124
4F48visit1NA
5M57visit114
1F20visit2 6
3F61visit2 9
4F48visit210
5M57visit211
\n" ], "text/latex": [ "A data.frame: 8 × 5\n", "\\begin{tabular}{r|lllll}\n", " pid & sex & age & visit & measurement\\\\\n", " & & & & \\\\\n", "\\hline\n", "\t 1 & F & 20 & visit1 & 17\\\\\n", "\t 3 & F & 61 & visit1 & 24\\\\\n", "\t 4 & F & 48 & visit1 & NA\\\\\n", "\t 5 & M & 57 & visit1 & 14\\\\\n", "\t 1 & F & 20 & visit2 & 6\\\\\n", "\t 3 & F & 61 & visit2 & 9\\\\\n", "\t 4 & F & 48 & visit2 & 10\\\\\n", "\t 5 & M & 57 & visit2 & 11\\\\\n", "\\end{tabular}\n" ], "text/markdown": [ "\n", "A data.frame: 8 × 5\n", "\n", "| pid <dbl> | sex <chr> | age <chr> | visit <chr> | measurement <int> |\n", "|---|---|---|---|---|\n", "| 1 | F | 20 | visit1 | 17 |\n", "| 3 | F | 61 | visit1 | 24 |\n", "| 4 | F | 48 | visit1 | NA |\n", "| 5 | M | 57 | visit1 | 14 |\n", "| 1 | F | 20 | visit2 | 6 |\n", "| 3 | F | 61 | visit2 | 9 |\n", "| 4 | F | 48 | visit2 | 10 |\n", "| 5 | M | 57 | visit2 | 11 |\n", "\n" ], "text/plain": [ " pid sex age visit measurement\n", "1 1 F 20 visit1 17 \n", "2 3 F 61 visit1 24 \n", "3 4 F 48 visit1 NA \n", "4 5 M 57 visit1 14 \n", "5 1 F 20 visit2 6 \n", "6 3 F 61 visit2 9 \n", "7 4 F 48 visit2 10 \n", "8 5 M 57 visit2 11 " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "df %>% \n", "gather(key=visit, value=measurement, visit1:visit2) %>%\n", "separate(desc, sep='-', into=c(\"sex\", \"age\"))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Clean-up and type coercion" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "df %>% \n", "gather(key=visit, value=measurement, visit1:visit2) %>%\n", "separate(desc, sep='-', into=c(\"sex\", \"age\")) %>%\n", "mutate(age=as.integer(age), \n", " visit=str_remove(visit, \"visit\"),\n", " visit=as.integer(visit)) %>%\n", "drop_na(measurement) -> df1" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
A data.frame: 7 × 5
pidsexagevisitmeasurement
<dbl><chr><int><int><int>
11F20117
23F61124
45M57114
51F202 6
63F612 9
74F48210
85M57211
\n" ], "text/latex": [ "A data.frame: 7 × 5\n", "\\begin{tabular}{r|lllll}\n", " & pid & sex & age & visit & measurement\\\\\n", " & & & & & \\\\\n", "\\hline\n", "\t1 & 1 & F & 20 & 1 & 17\\\\\n", "\t2 & 3 & F & 61 & 1 & 24\\\\\n", "\t4 & 5 & M & 57 & 1 & 14\\\\\n", "\t5 & 1 & F & 20 & 2 & 6\\\\\n", "\t6 & 3 & F & 61 & 2 & 9\\\\\n", "\t7 & 4 & F & 48 & 2 & 10\\\\\n", "\t8 & 5 & M & 57 & 2 & 11\\\\\n", "\\end{tabular}\n" ], "text/markdown": [ "\n", "A data.frame: 7 × 5\n", "\n", "| | pid <dbl> | sex <chr> | age <int> | visit <int> | measurement <int> |\n", "|---|---|---|---|---|---|\n", "| 1 | 1 | F | 20 | 1 | 17 |\n", "| 2 | 3 | F | 61 | 1 | 24 |\n", "| 4 | 5 | M | 57 | 1 | 14 |\n", "| 5 | 1 | F | 20 | 2 | 6 |\n", "| 6 | 3 | F | 61 | 2 | 9 |\n", "| 7 | 4 | F | 48 | 2 | 10 |\n", "| 8 | 5 | M | 57 | 2 | 11 |\n", "\n" ], "text/plain": [ " pid sex age visit measurement\n", "1 1 F 20 1 17 \n", "2 3 F 61 1 24 \n", "4 5 M 57 1 14 \n", "5 1 F 20 2 6 \n", "6 3 F 61 2 9 \n", "7 4 F 48 2 10 \n", "8 5 M 57 2 11 " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "df1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Joins" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "names <- data.frame(\n", " pid = 1:6,\n", " first = c( \"bob\", \"dan\",\"ann\", \"liz\", \"joe\", \"jen\"),\n", " last = c(\"lim\", \"tan\", \"liu\", \"nguyn\", \"smith\", \"finkelstein\")\n", ")" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
A data.frame: 6 × 3
pidfirstlast
<int><fct><fct>
1boblim
2dantan
3annliu
4liznguyn
5joesmith
6jenfinkelstein
\n" ], "text/latex": [ "A data.frame: 6 × 3\n", "\\begin{tabular}{r|lll}\n", " pid & first & last\\\\\n", " & & \\\\\n", "\\hline\n", "\t 1 & bob & lim \\\\\n", "\t 2 & dan & tan \\\\\n", "\t 3 & ann & liu \\\\\n", "\t 4 & liz & nguyn \\\\\n", "\t 5 & joe & smith \\\\\n", "\t 6 & jen & finkelstein\\\\\n", "\\end{tabular}\n" ], "text/markdown": [ "\n", "A data.frame: 6 × 3\n", "\n", "| pid <int> | first <fct> | last <fct> |\n", "|---|---|---|\n", "| 1 | bob | lim |\n", "| 2 | dan | tan |\n", "| 3 | ann | liu |\n", "| 4 | liz | nguyn |\n", "| 5 | joe | smith |\n", "| 6 | jen | finkelstein |\n", "\n" ], "text/plain": [ " pid first last \n", "1 1 bob lim \n", "2 2 dan tan \n", "3 3 ann liu \n", "4 4 liz nguyn \n", "5 5 joe smith \n", "6 6 jen finkelstein" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "names" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
A data.frame: 4 × 6
piddescvisit1visit2firstlast
<dbl><fct><int><int><fct><fct>
1F-2017 6boblim
3F-6124 9annliu
4F-48NA10liznguyn
5M-571411joesmith
\n" ], "text/latex": [ "A data.frame: 4 × 6\n", "\\begin{tabular}{r|llllll}\n", " pid & desc & visit1 & visit2 & first & last\\\\\n", " & & & & & \\\\\n", "\\hline\n", "\t 1 & F-20 & 17 & 6 & bob & lim \\\\\n", "\t 3 & F-61 & 24 & 9 & ann & liu \\\\\n", "\t 4 & F-48 & NA & 10 & liz & nguyn\\\\\n", "\t 5 & M-57 & 14 & 11 & joe & smith\\\\\n", "\\end{tabular}\n" ], "text/markdown": [ "\n", "A data.frame: 4 × 6\n", "\n", "| pid <dbl> | desc <fct> | visit1 <int> | visit2 <int> | first <fct> | last <fct> |\n", "|---|---|---|---|---|---|\n", "| 1 | F-20 | 17 | 6 | bob | lim |\n", "| 3 | F-61 | 24 | 9 | ann | liu |\n", "| 4 | F-48 | NA | 10 | liz | nguyn |\n", "| 5 | M-57 | 14 | 11 | joe | smith |\n", "\n" ], "text/plain": [ " pid desc visit1 visit2 first last \n", "1 1 F-20 17 6 bob lim \n", "2 3 F-61 24 9 ann liu \n", "3 4 F-48 NA 10 liz nguyn\n", "4 5 M-57 14 11 joe smith" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "inner_join(df, names, by = \"pid\")" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
A data.frame: 4 × 6
piddescvisit1visit2firstlast
<dbl><fct><int><int><fct><fct>
1F-2017 6boblim
3F-6124 9annliu
4F-48NA10liznguyn
5M-571411joesmith
\n" ], "text/latex": [ "A data.frame: 4 × 6\n", "\\begin{tabular}{r|llllll}\n", " pid & desc & visit1 & visit2 & first & last\\\\\n", " & & & & & \\\\\n", "\\hline\n", "\t 1 & F-20 & 17 & 6 & bob & lim \\\\\n", "\t 3 & F-61 & 24 & 9 & ann & liu \\\\\n", "\t 4 & F-48 & NA & 10 & liz & nguyn\\\\\n", "\t 5 & M-57 & 14 & 11 & joe & smith\\\\\n", "\\end{tabular}\n" ], "text/markdown": [ "\n", "A data.frame: 4 × 6\n", "\n", "| pid <dbl> | desc <fct> | visit1 <int> | visit2 <int> | first <fct> | last <fct> |\n", "|---|---|---|---|---|---|\n", "| 1 | F-20 | 17 | 6 | bob | lim |\n", "| 3 | F-61 | 24 | 9 | ann | liu |\n", "| 4 | F-48 | NA | 10 | liz | nguyn |\n", "| 5 | M-57 | 14 | 11 | joe | smith |\n", "\n" ], "text/plain": [ " pid desc visit1 visit2 first last \n", "1 1 F-20 17 6 bob lim \n", "2 3 F-61 24 9 ann liu \n", "3 4 F-48 NA 10 liz nguyn\n", "4 5 M-57 14 11 joe smith" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "left_join(df, names, by = \"pid\")" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
A data.frame: 6 × 6
piddescvisit1visit2firstlast
<dbl><fct><int><int><fct><fct>
1F-2017 6boblim
2NA NANAdantan
3F-6124 9annliu
4F-48NA10liznguyn
5M-571411joesmith
6NA NANAjenfinkelstein
\n" ], "text/latex": [ "A data.frame: 6 × 6\n", "\\begin{tabular}{r|llllll}\n", " pid & desc & visit1 & visit2 & first & last\\\\\n", " & & & & & \\\\\n", "\\hline\n", "\t 1 & F-20 & 17 & 6 & bob & lim \\\\\n", "\t 2 & NA & NA & NA & dan & tan \\\\\n", "\t 3 & F-61 & 24 & 9 & ann & liu \\\\\n", "\t 4 & F-48 & NA & 10 & liz & nguyn \\\\\n", "\t 5 & M-57 & 14 & 11 & joe & smith \\\\\n", "\t 6 & NA & NA & NA & jen & finkelstein\\\\\n", "\\end{tabular}\n" ], "text/markdown": [ "\n", "A data.frame: 6 × 6\n", "\n", "| pid <dbl> | desc <fct> | visit1 <int> | visit2 <int> | first <fct> | last <fct> |\n", "|---|---|---|---|---|---|\n", "| 1 | F-20 | 17 | 6 | bob | lim |\n", "| 2 | NA | NA | NA | dan | tan |\n", "| 3 | F-61 | 24 | 9 | ann | liu |\n", "| 4 | F-48 | NA | 10 | liz | nguyn |\n", "| 5 | M-57 | 14 | 11 | joe | smith |\n", "| 6 | NA | NA | NA | jen | finkelstein |\n", "\n" ], "text/plain": [ " pid desc visit1 visit2 first last \n", "1 1 F-20 17 6 bob lim \n", "2 2 NA NA NA dan tan \n", "3 3 F-61 24 9 ann liu \n", "4 4 F-48 NA 10 liz nguyn \n", "5 5 M-57 14 11 joe smith \n", "6 6 NA NA NA jen finkelstein" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "right_join(df, names, by = \"pid\")" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
A data.frame: 6 × 6
piddescvisit1visit2firstlast
<dbl><fct><int><int><fct><fct>
1F-2017 6boblim
3F-6124 9annliu
4F-48NA10liznguyn
5M-571411joesmith
2NA NANAdantan
6NA NANAjenfinkelstein
\n" ], "text/latex": [ "A data.frame: 6 × 6\n", "\\begin{tabular}{r|llllll}\n", " pid & desc & visit1 & visit2 & first & last\\\\\n", " & & & & & \\\\\n", "\\hline\n", "\t 1 & F-20 & 17 & 6 & bob & lim \\\\\n", "\t 3 & F-61 & 24 & 9 & ann & liu \\\\\n", "\t 4 & F-48 & NA & 10 & liz & nguyn \\\\\n", "\t 5 & M-57 & 14 & 11 & joe & smith \\\\\n", "\t 2 & NA & NA & NA & dan & tan \\\\\n", "\t 6 & NA & NA & NA & jen & finkelstein\\\\\n", "\\end{tabular}\n" ], "text/markdown": [ "\n", "A data.frame: 6 × 6\n", "\n", "| pid <dbl> | desc <fct> | visit1 <int> | visit2 <int> | first <fct> | last <fct> |\n", "|---|---|---|---|---|---|\n", "| 1 | F-20 | 17 | 6 | bob | lim |\n", "| 3 | F-61 | 24 | 9 | ann | liu |\n", "| 4 | F-48 | NA | 10 | liz | nguyn |\n", "| 5 | M-57 | 14 | 11 | joe | smith |\n", "| 2 | NA | NA | NA | dan | tan |\n", "| 6 | NA | NA | NA | jen | finkelstein |\n", "\n" ], "text/plain": [ " pid desc visit1 visit2 first last \n", "1 1 F-20 17 6 bob lim \n", "2 3 F-61 24 9 ann liu \n", "3 4 F-48 NA 10 liz nguyn \n", "4 5 M-57 14 11 joe smith \n", "5 2 NA NA NA dan tan \n", "6 6 NA NA NA jen finkelstein" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "full_join(df, names, by = \"pid\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exercise" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**1**. Using the `who` data set, summarize the total count for each method of TB diagnosis across all years for which there is data for countries that begin wiht 'Z'." ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "help(who)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
A tibble: 5 × 60
countryiso2iso3yearnew_sp_m014new_sp_m1524new_sp_m2534new_sp_m3544new_sp_m4554new_sp_m5564newrel_m4554newrel_m5564newrel_m65newrel_f014newrel_f1524newrel_f2534newrel_f3544newrel_f4554newrel_f5564newrel_f65
<chr><chr><chr><int><int><int><int><int><int><int><int><int><int><int><int><int><int><int><int><int>
Iceland ISISL1990NANANANANANANANANANANANANANANANA
West Bank and Gaza StripPSPSE2006 0 1 3 4 1 1NANANANANANANANANANA
Vanuatu VUVUT2006 1 5 3 1 4 4NANANANANANANANANANA
Israel ILISR1988NANANANANANANANANANANANANANANANA
Senegal SNSEN1982NANANANANANANANANANANANANANANANA
\n" ], "text/latex": [ "A tibble: 5 × 60\n", "\\begin{tabular}{r|llllllllllllllllllllllllllllllllllllllllllllllllllllllllllll}\n", " country & iso2 & iso3 & year & new\\_sp\\_m014 & new\\_sp\\_m1524 & new\\_sp\\_m2534 & new\\_sp\\_m3544 & new\\_sp\\_m4554 & new\\_sp\\_m5564 & new\\_sp\\_m65 & new\\_sp\\_f014 & new\\_sp\\_f1524 & new\\_sp\\_f2534 & new\\_sp\\_f3544 & new\\_sp\\_f4554 & new\\_sp\\_f5564 & new\\_sp\\_f65 & new\\_sn\\_m014 & new\\_sn\\_m1524 & new\\_sn\\_m2534 & new\\_sn\\_m3544 & new\\_sn\\_m4554 & new\\_sn\\_m5564 & new\\_sn\\_m65 & new\\_sn\\_f014 & new\\_sn\\_f1524 & new\\_sn\\_f2534 & new\\_sn\\_f3544 & new\\_sn\\_f4554 & new\\_sn\\_f5564 & new\\_sn\\_f65 & new\\_ep\\_m014 & new\\_ep\\_m1524 & new\\_ep\\_m2534 & new\\_ep\\_m3544 & new\\_ep\\_m4554 & new\\_ep\\_m5564 & new\\_ep\\_m65 & new\\_ep\\_f014 & new\\_ep\\_f1524 & new\\_ep\\_f2534 & new\\_ep\\_f3544 & new\\_ep\\_f4554 & new\\_ep\\_f5564 & new\\_ep\\_f65 & newrel\\_m014 & newrel\\_m1524 & newrel\\_m2534 & newrel\\_m3544 & newrel\\_m4554 & newrel\\_m5564 & newrel\\_m65 & newrel\\_f014 & newrel\\_f1524 & newrel\\_f2534 & newrel\\_f3544 & newrel\\_f4554 & newrel\\_f5564 & newrel\\_f65\\\\\n", " & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & \\\\\n", "\\hline\n", "\t Iceland & IS & ISL & 1990 & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA\\\\\n", "\t West Bank and Gaza Strip & PS & PSE & 2006 & 0 & 1 & 3 & 4 & 1 & 1 & 2 & 0 & 0 & 0 & 1 & 1 & 1 & 1 & 0 & 0 & 1 & 2 & 1 & 0 & 2 & 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 2 & 2 & 2 & 3 & 2 & 1 & 3 & 0 & 1 & 1 & 1 & 0 & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA\\\\\n", "\t Vanuatu & VU & VUT & 2006 & 1 & 5 & 3 & 1 & 4 & 4 & 0 & 2 & 7 & 9 & 2 & 4 & 0 & 0 & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA\\\\\n", "\t Israel & IL & ISR & 1988 & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA\\\\\n", "\t Senegal & SN & SEN & 1982 & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA\\\\\n", "\\end{tabular}\n" ], "text/markdown": [ "\n", "A tibble: 5 × 60\n", "\n", "| country <chr> | iso2 <chr> | iso3 <chr> | year <int> | new_sp_m014 <int> | new_sp_m1524 <int> | new_sp_m2534 <int> | new_sp_m3544 <int> | new_sp_m4554 <int> | new_sp_m5564 <int> | ⋯ ⋯ | newrel_m4554 <int> | newrel_m5564 <int> | newrel_m65 <int> | newrel_f014 <int> | newrel_f1524 <int> | newrel_f2534 <int> | newrel_f3544 <int> | newrel_f4554 <int> | newrel_f5564 <int> | newrel_f65 <int> |\n", "|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|\n", "| Iceland | IS | ISL | 1990 | NA | NA | NA | NA | NA | NA | ⋯ | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |\n", "| West Bank and Gaza Strip | PS | PSE | 2006 | 0 | 1 | 3 | 4 | 1 | 1 | ⋯ | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |\n", "| Vanuatu | VU | VUT | 2006 | 1 | 5 | 3 | 1 | 4 | 4 | ⋯ | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |\n", "| Israel | IL | ISR | 1988 | NA | NA | NA | NA | NA | NA | ⋯ | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |\n", "| Senegal | SN | SEN | 1982 | NA | NA | NA | NA | NA | NA | ⋯ | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |\n", "\n" ], "text/plain": [ " country iso2 iso3 year new_sp_m014 new_sp_m1524 new_sp_m2534\n", "1 Iceland IS ISL 1990 NA NA NA \n", "2 West Bank and Gaza Strip PS PSE 2006 0 1 3 \n", "3 Vanuatu VU VUT 2006 1 5 3 \n", "4 Israel IL ISR 1988 NA NA NA \n", "5 Senegal SN SEN 1982 NA NA NA \n", " new_sp_m3544 new_sp_m4554 new_sp_m5564 ⋯ newrel_m4554 newrel_m5564 newrel_m65\n", "1 NA NA NA ⋯ NA NA NA \n", "2 4 1 1 ⋯ NA NA NA \n", "3 1 4 4 ⋯ NA NA NA \n", "4 NA NA NA ⋯ NA NA NA \n", "5 NA NA NA ⋯ NA NA NA \n", " newrel_f014 newrel_f1524 newrel_f2534 newrel_f3544 newrel_f4554 newrel_f5564\n", "1 NA NA NA NA NA NA \n", "2 NA NA NA NA NA NA \n", "3 NA NA NA NA NA NA \n", "4 NA NA NA NA NA NA \n", "5 NA NA NA NA NA NA \n", " newrel_f65\n", "1 NA \n", "2 NA \n", "3 NA \n", "4 NA \n", "5 NA " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "who %>% sample_n(5)" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
    \n", "\t
  1. 'country'
  2. \n", "\t
  3. 'iso2'
  4. \n", "\t
  5. 'iso3'
  6. \n", "\t
  7. 'year'
  8. \n", "\t
  9. 'new_sp_m014'
  10. \n", "\t
  11. 'new_sp_m1524'
  12. \n", "\t
  13. 'new_sp_m2534'
  14. \n", "\t
  15. 'new_sp_m3544'
  16. \n", "\t
  17. 'new_sp_m4554'
  18. \n", "\t
  19. 'new_sp_m5564'
  20. \n", "\t
  21. 'new_sp_m65'
  22. \n", "\t
  23. 'new_sp_f014'
  24. \n", "\t
  25. 'new_sp_f1524'
  26. \n", "\t
  27. 'new_sp_f2534'
  28. \n", "\t
  29. 'new_sp_f3544'
  30. \n", "\t
  31. 'new_sp_f4554'
  32. \n", "\t
  33. 'new_sp_f5564'
  34. \n", "\t
  35. 'new_sp_f65'
  36. \n", "\t
  37. 'new_sn_m014'
  38. \n", "\t
  39. 'new_sn_m1524'
  40. \n", "\t
  41. 'new_sn_m2534'
  42. \n", "\t
  43. 'new_sn_m3544'
  44. \n", "\t
  45. 'new_sn_m4554'
  46. \n", "\t
  47. 'new_sn_m5564'
  48. \n", "\t
  49. 'new_sn_m65'
  50. \n", "\t
  51. 'new_sn_f014'
  52. \n", "\t
  53. 'new_sn_f1524'
  54. \n", "\t
  55. 'new_sn_f2534'
  56. \n", "\t
  57. 'new_sn_f3544'
  58. \n", "\t
  59. 'new_sn_f4554'
  60. \n", "\t
  61. 'new_sn_f5564'
  62. \n", "\t
  63. 'new_sn_f65'
  64. \n", "\t
  65. 'new_ep_m014'
  66. \n", "\t
  67. 'new_ep_m1524'
  68. \n", "\t
  69. 'new_ep_m2534'
  70. \n", "\t
  71. 'new_ep_m3544'
  72. \n", "\t
  73. 'new_ep_m4554'
  74. \n", "\t
  75. 'new_ep_m5564'
  76. \n", "\t
  77. 'new_ep_m65'
  78. \n", "\t
  79. 'new_ep_f014'
  80. \n", "\t
  81. 'new_ep_f1524'
  82. \n", "\t
  83. 'new_ep_f2534'
  84. \n", "\t
  85. 'new_ep_f3544'
  86. \n", "\t
  87. 'new_ep_f4554'
  88. \n", "\t
  89. 'new_ep_f5564'
  90. \n", "\t
  91. 'new_ep_f65'
  92. \n", "\t
  93. 'newrel_m014'
  94. \n", "\t
  95. 'newrel_m1524'
  96. \n", "\t
  97. 'newrel_m2534'
  98. \n", "\t
  99. 'newrel_m3544'
  100. \n", "\t
  101. 'newrel_m4554'
  102. \n", "\t
  103. 'newrel_m5564'
  104. \n", "\t
  105. 'newrel_m65'
  106. \n", "\t
  107. 'newrel_f014'
  108. \n", "\t
  109. 'newrel_f1524'
  110. \n", "\t
  111. 'newrel_f2534'
  112. \n", "\t
  113. 'newrel_f3544'
  114. \n", "\t
  115. 'newrel_f4554'
  116. \n", "\t
  117. 'newrel_f5564'
  118. \n", "\t
  119. 'newrel_f65'
  120. \n", "
\n" ], "text/latex": [ "\\begin{enumerate*}\n", "\\item 'country'\n", "\\item 'iso2'\n", "\\item 'iso3'\n", "\\item 'year'\n", "\\item 'new\\_sp\\_m014'\n", "\\item 'new\\_sp\\_m1524'\n", "\\item 'new\\_sp\\_m2534'\n", "\\item 'new\\_sp\\_m3544'\n", "\\item 'new\\_sp\\_m4554'\n", "\\item 'new\\_sp\\_m5564'\n", "\\item 'new\\_sp\\_m65'\n", "\\item 'new\\_sp\\_f014'\n", "\\item 'new\\_sp\\_f1524'\n", "\\item 'new\\_sp\\_f2534'\n", "\\item 'new\\_sp\\_f3544'\n", "\\item 'new\\_sp\\_f4554'\n", "\\item 'new\\_sp\\_f5564'\n", "\\item 'new\\_sp\\_f65'\n", "\\item 'new\\_sn\\_m014'\n", "\\item 'new\\_sn\\_m1524'\n", "\\item 'new\\_sn\\_m2534'\n", "\\item 'new\\_sn\\_m3544'\n", "\\item 'new\\_sn\\_m4554'\n", "\\item 'new\\_sn\\_m5564'\n", "\\item 'new\\_sn\\_m65'\n", "\\item 'new\\_sn\\_f014'\n", "\\item 'new\\_sn\\_f1524'\n", "\\item 'new\\_sn\\_f2534'\n", "\\item 'new\\_sn\\_f3544'\n", "\\item 'new\\_sn\\_f4554'\n", "\\item 'new\\_sn\\_f5564'\n", "\\item 'new\\_sn\\_f65'\n", "\\item 'new\\_ep\\_m014'\n", "\\item 'new\\_ep\\_m1524'\n", "\\item 'new\\_ep\\_m2534'\n", "\\item 'new\\_ep\\_m3544'\n", "\\item 'new\\_ep\\_m4554'\n", "\\item 'new\\_ep\\_m5564'\n", "\\item 'new\\_ep\\_m65'\n", "\\item 'new\\_ep\\_f014'\n", "\\item 'new\\_ep\\_f1524'\n", "\\item 'new\\_ep\\_f2534'\n", "\\item 'new\\_ep\\_f3544'\n", "\\item 'new\\_ep\\_f4554'\n", "\\item 'new\\_ep\\_f5564'\n", "\\item 'new\\_ep\\_f65'\n", "\\item 'newrel\\_m014'\n", "\\item 'newrel\\_m1524'\n", "\\item 'newrel\\_m2534'\n", "\\item 'newrel\\_m3544'\n", "\\item 'newrel\\_m4554'\n", "\\item 'newrel\\_m5564'\n", "\\item 'newrel\\_m65'\n", "\\item 'newrel\\_f014'\n", "\\item 'newrel\\_f1524'\n", "\\item 'newrel\\_f2534'\n", "\\item 'newrel\\_f3544'\n", "\\item 'newrel\\_f4554'\n", "\\item 'newrel\\_f5564'\n", "\\item 'newrel\\_f65'\n", "\\end{enumerate*}\n" ], "text/markdown": [ "1. 'country'\n", "2. 'iso2'\n", "3. 'iso3'\n", "4. 'year'\n", "5. 'new_sp_m014'\n", "6. 'new_sp_m1524'\n", "7. 'new_sp_m2534'\n", "8. 'new_sp_m3544'\n", "9. 'new_sp_m4554'\n", "10. 'new_sp_m5564'\n", "11. 'new_sp_m65'\n", "12. 'new_sp_f014'\n", "13. 'new_sp_f1524'\n", "14. 'new_sp_f2534'\n", "15. 'new_sp_f3544'\n", "16. 'new_sp_f4554'\n", "17. 'new_sp_f5564'\n", "18. 'new_sp_f65'\n", "19. 'new_sn_m014'\n", "20. 'new_sn_m1524'\n", "21. 'new_sn_m2534'\n", "22. 'new_sn_m3544'\n", "23. 'new_sn_m4554'\n", "24. 'new_sn_m5564'\n", "25. 'new_sn_m65'\n", "26. 'new_sn_f014'\n", "27. 'new_sn_f1524'\n", "28. 'new_sn_f2534'\n", "29. 'new_sn_f3544'\n", "30. 'new_sn_f4554'\n", "31. 'new_sn_f5564'\n", "32. 'new_sn_f65'\n", "33. 'new_ep_m014'\n", "34. 'new_ep_m1524'\n", "35. 'new_ep_m2534'\n", "36. 'new_ep_m3544'\n", "37. 'new_ep_m4554'\n", "38. 'new_ep_m5564'\n", "39. 'new_ep_m65'\n", "40. 'new_ep_f014'\n", "41. 'new_ep_f1524'\n", "42. 'new_ep_f2534'\n", "43. 'new_ep_f3544'\n", "44. 'new_ep_f4554'\n", "45. 'new_ep_f5564'\n", "46. 'new_ep_f65'\n", "47. 'newrel_m014'\n", "48. 'newrel_m1524'\n", "49. 'newrel_m2534'\n", "50. 'newrel_m3544'\n", "51. 'newrel_m4554'\n", "52. 'newrel_m5564'\n", "53. 'newrel_m65'\n", "54. 'newrel_f014'\n", "55. 'newrel_f1524'\n", "56. 'newrel_f2534'\n", "57. 'newrel_f3544'\n", "58. 'newrel_f4554'\n", "59. 'newrel_f5564'\n", "60. 'newrel_f65'\n", "\n", "\n" ], "text/plain": [ " [1] \"country\" \"iso2\" \"iso3\" \"year\" \"new_sp_m014\" \n", " [6] \"new_sp_m1524\" \"new_sp_m2534\" \"new_sp_m3544\" \"new_sp_m4554\" \"new_sp_m5564\"\n", "[11] \"new_sp_m65\" \"new_sp_f014\" \"new_sp_f1524\" \"new_sp_f2534\" \"new_sp_f3544\"\n", "[16] \"new_sp_f4554\" \"new_sp_f5564\" \"new_sp_f65\" \"new_sn_m014\" \"new_sn_m1524\"\n", "[21] \"new_sn_m2534\" \"new_sn_m3544\" \"new_sn_m4554\" \"new_sn_m5564\" \"new_sn_m65\" \n", "[26] \"new_sn_f014\" \"new_sn_f1524\" \"new_sn_f2534\" \"new_sn_f3544\" \"new_sn_f4554\"\n", "[31] \"new_sn_f5564\" \"new_sn_f65\" \"new_ep_m014\" \"new_ep_m1524\" \"new_ep_m2534\"\n", "[36] \"new_ep_m3544\" \"new_ep_m4554\" \"new_ep_m5564\" \"new_ep_m65\" \"new_ep_f014\" \n", "[41] \"new_ep_f1524\" \"new_ep_f2534\" \"new_ep_f3544\" \"new_ep_f4554\" \"new_ep_f5564\"\n", "[46] \"new_ep_f65\" \"newrel_m014\" \"newrel_m1524\" \"newrel_m2534\" \"newrel_m3544\"\n", "[51] \"newrel_m4554\" \"newrel_m5564\" \"newrel_m65\" \"newrel_f014\" \"newrel_f1524\"\n", "[56] \"newrel_f2534\" \"newrel_f3544\" \"newrel_f4554\" \"newrel_f5564\" \"newrel_f65\" " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "colnames(who)" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [], "source": [ "who %>% \n", "select(-iso2, -iso3) %>%\n", "gather(key=group, value=n, starts_with('new')) -> who1" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
A tibble: 6 × 4
countryyeargroupn
<chr><int><chr><int>
Afghanistan1980new_sp_m014NA
Afghanistan1981new_sp_m014NA
Afghanistan1982new_sp_m014NA
Afghanistan1983new_sp_m014NA
Afghanistan1984new_sp_m014NA
Afghanistan1985new_sp_m014NA
\n" ], "text/latex": [ "A tibble: 6 × 4\n", "\\begin{tabular}{r|llll}\n", " country & year & group & n\\\\\n", " & & & \\\\\n", "\\hline\n", "\t Afghanistan & 1980 & new\\_sp\\_m014 & NA\\\\\n", "\t Afghanistan & 1981 & new\\_sp\\_m014 & NA\\\\\n", "\t Afghanistan & 1982 & new\\_sp\\_m014 & NA\\\\\n", "\t Afghanistan & 1983 & new\\_sp\\_m014 & NA\\\\\n", "\t Afghanistan & 1984 & new\\_sp\\_m014 & NA\\\\\n", "\t Afghanistan & 1985 & new\\_sp\\_m014 & NA\\\\\n", "\\end{tabular}\n" ], "text/markdown": [ "\n", "A tibble: 6 × 4\n", "\n", "| country <chr> | year <int> | group <chr> | n <int> |\n", "|---|---|---|---|\n", "| Afghanistan | 1980 | new_sp_m014 | NA |\n", "| Afghanistan | 1981 | new_sp_m014 | NA |\n", "| Afghanistan | 1982 | new_sp_m014 | NA |\n", "| Afghanistan | 1983 | new_sp_m014 | NA |\n", "| Afghanistan | 1984 | new_sp_m014 | NA |\n", "| Afghanistan | 1985 | new_sp_m014 | NA |\n", "\n" ], "text/plain": [ " country year group n \n", "1 Afghanistan 1980 new_sp_m014 NA\n", "2 Afghanistan 1981 new_sp_m014 NA\n", "3 Afghanistan 1982 new_sp_m014 NA\n", "4 Afghanistan 1983 new_sp_m014 NA\n", "5 Afghanistan 1984 new_sp_m014 NA\n", "6 Afghanistan 1985 new_sp_m014 NA" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "who1 %>% head" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [], "source": [ "who1 %>% \n", "mutate(group = str_replace(group, \"newrel\", \"new_rel\")) -> who2" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
A tibble: 6 × 4
countryyeargroupn
<chr><int><chr><int>
Afghanistan1980new_sp_m014NA
Afghanistan1981new_sp_m014NA
Afghanistan1982new_sp_m014NA
Afghanistan1983new_sp_m014NA
Afghanistan1984new_sp_m014NA
Afghanistan1985new_sp_m014NA
\n" ], "text/latex": [ "A tibble: 6 × 4\n", "\\begin{tabular}{r|llll}\n", " country & year & group & n\\\\\n", " & & & \\\\\n", "\\hline\n", "\t Afghanistan & 1980 & new\\_sp\\_m014 & NA\\\\\n", "\t Afghanistan & 1981 & new\\_sp\\_m014 & NA\\\\\n", "\t Afghanistan & 1982 & new\\_sp\\_m014 & NA\\\\\n", "\t Afghanistan & 1983 & new\\_sp\\_m014 & NA\\\\\n", "\t Afghanistan & 1984 & new\\_sp\\_m014 & NA\\\\\n", "\t Afghanistan & 1985 & new\\_sp\\_m014 & NA\\\\\n", "\\end{tabular}\n" ], "text/markdown": [ "\n", "A tibble: 6 × 4\n", "\n", "| country <chr> | year <int> | group <chr> | n <int> |\n", "|---|---|---|---|\n", "| Afghanistan | 1980 | new_sp_m014 | NA |\n", "| Afghanistan | 1981 | new_sp_m014 | NA |\n", "| Afghanistan | 1982 | new_sp_m014 | NA |\n", "| Afghanistan | 1983 | new_sp_m014 | NA |\n", "| Afghanistan | 1984 | new_sp_m014 | NA |\n", "| Afghanistan | 1985 | new_sp_m014 | NA |\n", "\n" ], "text/plain": [ " country year group n \n", "1 Afghanistan 1980 new_sp_m014 NA\n", "2 Afghanistan 1981 new_sp_m014 NA\n", "3 Afghanistan 1982 new_sp_m014 NA\n", "4 Afghanistan 1983 new_sp_m014 NA\n", "5 Afghanistan 1984 new_sp_m014 NA\n", "6 Afghanistan 1985 new_sp_m014 NA" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "who2 %>% head" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [], "source": [ "who2 %>% \n", "separate(group, sep=\"_\", into=c(\"type\", \"method\", \"age_group\")) -> who3" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
A tibble: 6 × 6
countryyeartypemethodage_groupn
<chr><int><chr><chr><chr><int>
Afghanistan1980newspm014NA
Afghanistan1981newspm014NA
Afghanistan1982newspm014NA
Afghanistan1983newspm014NA
Afghanistan1984newspm014NA
Afghanistan1985newspm014NA
\n" ], "text/latex": [ "A tibble: 6 × 6\n", "\\begin{tabular}{r|llllll}\n", " country & year & type & method & age\\_group & n\\\\\n", " & & & & & \\\\\n", "\\hline\n", "\t Afghanistan & 1980 & new & sp & m014 & NA\\\\\n", "\t Afghanistan & 1981 & new & sp & m014 & NA\\\\\n", "\t Afghanistan & 1982 & new & sp & m014 & NA\\\\\n", "\t Afghanistan & 1983 & new & sp & m014 & NA\\\\\n", "\t Afghanistan & 1984 & new & sp & m014 & NA\\\\\n", "\t Afghanistan & 1985 & new & sp & m014 & NA\\\\\n", "\\end{tabular}\n" ], "text/markdown": [ "\n", "A tibble: 6 × 6\n", "\n", "| country <chr> | year <int> | type <chr> | method <chr> | age_group <chr> | n <int> |\n", "|---|---|---|---|---|---|\n", "| Afghanistan | 1980 | new | sp | m014 | NA |\n", "| Afghanistan | 1981 | new | sp | m014 | NA |\n", "| Afghanistan | 1982 | new | sp | m014 | NA |\n", "| Afghanistan | 1983 | new | sp | m014 | NA |\n", "| Afghanistan | 1984 | new | sp | m014 | NA |\n", "| Afghanistan | 1985 | new | sp | m014 | NA |\n", "\n" ], "text/plain": [ " country year type method age_group n \n", "1 Afghanistan 1980 new sp m014 NA\n", "2 Afghanistan 1981 new sp m014 NA\n", "3 Afghanistan 1982 new sp m014 NA\n", "4 Afghanistan 1983 new sp m014 NA\n", "5 Afghanistan 1984 new sp m014 NA\n", "6 Afghanistan 1985 new sp m014 NA" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "who3 %>% head" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [], "source": [ "who3 %>% \n", "drop_na(n) -> who4" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
A tibble: 6 × 6
countryyeartypemethodage_groupn
<chr><int><chr><chr><chr><int>
Afghanistan1997newspm014 0
Afghanistan1998newspm014 30
Afghanistan1999newspm014 8
Afghanistan2000newspm014 52
Afghanistan2001newspm014129
Afghanistan2002newspm014 90
\n" ], "text/latex": [ "A tibble: 6 × 6\n", "\\begin{tabular}{r|llllll}\n", " country & year & type & method & age\\_group & n\\\\\n", " & & & & & \\\\\n", "\\hline\n", "\t Afghanistan & 1997 & new & sp & m014 & 0\\\\\n", "\t Afghanistan & 1998 & new & sp & m014 & 30\\\\\n", "\t Afghanistan & 1999 & new & sp & m014 & 8\\\\\n", "\t Afghanistan & 2000 & new & sp & m014 & 52\\\\\n", "\t Afghanistan & 2001 & new & sp & m014 & 129\\\\\n", "\t Afghanistan & 2002 & new & sp & m014 & 90\\\\\n", "\\end{tabular}\n" ], "text/markdown": [ "\n", "A tibble: 6 × 6\n", "\n", "| country <chr> | year <int> | type <chr> | method <chr> | age_group <chr> | n <int> |\n", "|---|---|---|---|---|---|\n", "| Afghanistan | 1997 | new | sp | m014 | 0 |\n", "| Afghanistan | 1998 | new | sp | m014 | 30 |\n", "| Afghanistan | 1999 | new | sp | m014 | 8 |\n", "| Afghanistan | 2000 | new | sp | m014 | 52 |\n", "| Afghanistan | 2001 | new | sp | m014 | 129 |\n", "| Afghanistan | 2002 | new | sp | m014 | 90 |\n", "\n" ], "text/plain": [ " country year type method age_group n \n", "1 Afghanistan 1997 new sp m014 0\n", "2 Afghanistan 1998 new sp m014 30\n", "3 Afghanistan 1999 new sp m014 8\n", "4 Afghanistan 2000 new sp m014 52\n", "5 Afghanistan 2001 new sp m014 129\n", "6 Afghanistan 2002 new sp m014 90" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "who4 %>% head" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
A grouped_df: 8 × 3
countrymethodcount
<chr><chr><int>
Zambia ep 19082
Zambia rel 40638
Zambia sn 37054
Zambia sp 167064
Zimbabweep 41719
Zimbabwerel 32899
Zimbabwesn 152573
Zimbabwesp 133224
\n" ], "text/latex": [ "A grouped_df: 8 × 3\n", "\\begin{tabular}{r|lll}\n", " country & method & count\\\\\n", " & & \\\\\n", "\\hline\n", "\t Zambia & ep & 19082\\\\\n", "\t Zambia & rel & 40638\\\\\n", "\t Zambia & sn & 37054\\\\\n", "\t Zambia & sp & 167064\\\\\n", "\t Zimbabwe & ep & 41719\\\\\n", "\t Zimbabwe & rel & 32899\\\\\n", "\t Zimbabwe & sn & 152573\\\\\n", "\t Zimbabwe & sp & 133224\\\\\n", "\\end{tabular}\n" ], "text/markdown": [ "\n", "A grouped_df: 8 × 3\n", "\n", "| country <chr> | method <chr> | count <int> |\n", "|---|---|---|\n", "| Zambia | ep | 19082 |\n", "| Zambia | rel | 40638 |\n", "| Zambia | sn | 37054 |\n", "| Zambia | sp | 167064 |\n", "| Zimbabwe | ep | 41719 |\n", "| Zimbabwe | rel | 32899 |\n", "| Zimbabwe | sn | 152573 |\n", "| Zimbabwe | sp | 133224 |\n", "\n" ], "text/plain": [ " country method count \n", "1 Zambia ep 19082\n", "2 Zambia rel 40638\n", "3 Zambia sn 37054\n", "4 Zambia sp 167064\n", "5 Zimbabwe ep 41719\n", "6 Zimbabwe rel 32899\n", "7 Zimbabwe sn 152573\n", "8 Zimbabwe sp 133224" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "who4 %>% \n", " filter(str_detect(country, '^Z')) %>% \n", " group_by(country, method) %>% \n", " summarize(count=sum(n))" ] } ], "metadata": { "kernelspec": { "display_name": "R", "language": "R", "name": "ir" }, "language_info": { "codemirror_mode": "r", "file_extension": ".r", "mimetype": "text/x-r-source", "name": "R", "pygments_lexer": "r", "version": "3.6.0" } }, "nbformat": 4, "nbformat_minor": 2 }