{
"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",
"A data.frame: 4 × 4\n",
"\n",
"\t| pid | desc | visit1 | visit2 |
\n",
"\t| <dbl> | <fct> | <int> | <int> |
\n",
"\n",
"\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",
"\n",
"
\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",
"A data.frame: 8 × 4\n",
"\n",
"\t| pid | desc | visit | measurement |
\n",
"\t| <dbl> | <fct> | <chr> | <int> |
\n",
"\n",
"\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",
"\n",
"
\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",
"A data.frame: 8 × 4\n",
"\n",
"\t| pid | desc | visit | measurement |
\n",
"\t| <dbl> | <fct> | <chr> | <int> |
\n",
"\n",
"\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",
"\n",
"
\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",
"A data.frame: 8 × 5\n",
"\n",
"\t| pid | sex | age | visit | measurement |
\n",
"\t| <dbl> | <chr> | <chr> | <chr> | <int> |
\n",
"\n",
"\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",
"\n",
"
\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",
"A data.frame: 7 × 5\n",
"\n",
"\t | pid | sex | age | visit | measurement |
\n",
"\t | <dbl> | <chr> | <int> | <int> | <int> |
\n",
"\n",
"\n",
"\t| 1 | 1 | F | 20 | 1 | 17 |
\n",
"\t| 2 | 3 | F | 61 | 1 | 24 |
\n",
"\t| 4 | 5 | M | 57 | 1 | 14 |
\n",
"\t| 5 | 1 | F | 20 | 2 | 6 |
\n",
"\t| 6 | 3 | F | 61 | 2 | 9 |
\n",
"\t| 7 | 4 | F | 48 | 2 | 10 |
\n",
"\t| 8 | 5 | M | 57 | 2 | 11 |
\n",
"\n",
"
\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",
"A data.frame: 6 × 3\n",
"\n",
"\t| pid | first | last |
\n",
"\t| <int> | <fct> | <fct> |
\n",
"\n",
"\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",
"\n",
"
\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",
"A data.frame: 4 × 6\n",
"\n",
"\t| pid | desc | visit1 | visit2 | first | last |
\n",
"\t| <dbl> | <fct> | <int> | <int> | <fct> | <fct> |
\n",
"\n",
"\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",
"\n",
"
\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",
"A data.frame: 4 × 6\n",
"\n",
"\t| pid | desc | visit1 | visit2 | first | last |
\n",
"\t| <dbl> | <fct> | <int> | <int> | <fct> | <fct> |
\n",
"\n",
"\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",
"\n",
"
\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",
"A data.frame: 6 × 6\n",
"\n",
"\t| pid | desc | visit1 | visit2 | first | last |
\n",
"\t| <dbl> | <fct> | <int> | <int> | <fct> | <fct> |
\n",
"\n",
"\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",
"\n",
"
\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",
"A data.frame: 6 × 6\n",
"\n",
"\t| pid | desc | visit1 | visit2 | first | last |
\n",
"\t| <dbl> | <fct> | <int> | <int> | <fct> | <fct> |
\n",
"\n",
"\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",
"\n",
"
\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",
"A tibble: 5 × 60\n",
"\n",
"\t| country | iso2 | iso3 | year | new_sp_m014 | new_sp_m1524 | new_sp_m2534 | new_sp_m3544 | new_sp_m4554 | new_sp_m5564 | ⋯ | newrel_m4554 | newrel_m5564 | newrel_m65 | newrel_f014 | newrel_f1524 | newrel_f2534 | newrel_f3544 | newrel_f4554 | newrel_f5564 | newrel_f65 |
\n",
"\t| <chr> | <chr> | <chr> | <int> | <int> | <int> | <int> | <int> | <int> | <int> | ⋯ | <int> | <int> | <int> | <int> | <int> | <int> | <int> | <int> | <int> | <int> |
\n",
"\n",
"\n",
"\t| Iceland | IS | ISL | 1990 | 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 | ⋯ | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
\n",
"\t| Vanuatu | VU | VUT | 2006 | 1 | 5 | 3 | 1 | 4 | 4 | ⋯ | 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 |
\n",
"\t| Senegal | SN | SEN | 1982 | NA | NA | NA | NA | NA | NA | ⋯ | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
\n",
"\n",
"
\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- 'country'
\n",
"\t- 'iso2'
\n",
"\t- 'iso3'
\n",
"\t- 'year'
\n",
"\t- 'new_sp_m014'
\n",
"\t- 'new_sp_m1524'
\n",
"\t- 'new_sp_m2534'
\n",
"\t- 'new_sp_m3544'
\n",
"\t- 'new_sp_m4554'
\n",
"\t- 'new_sp_m5564'
\n",
"\t- 'new_sp_m65'
\n",
"\t- 'new_sp_f014'
\n",
"\t- 'new_sp_f1524'
\n",
"\t- 'new_sp_f2534'
\n",
"\t- 'new_sp_f3544'
\n",
"\t- 'new_sp_f4554'
\n",
"\t- 'new_sp_f5564'
\n",
"\t- 'new_sp_f65'
\n",
"\t- 'new_sn_m014'
\n",
"\t- 'new_sn_m1524'
\n",
"\t- 'new_sn_m2534'
\n",
"\t- 'new_sn_m3544'
\n",
"\t- 'new_sn_m4554'
\n",
"\t- 'new_sn_m5564'
\n",
"\t- 'new_sn_m65'
\n",
"\t- 'new_sn_f014'
\n",
"\t- 'new_sn_f1524'
\n",
"\t- 'new_sn_f2534'
\n",
"\t- 'new_sn_f3544'
\n",
"\t- 'new_sn_f4554'
\n",
"\t- 'new_sn_f5564'
\n",
"\t- 'new_sn_f65'
\n",
"\t- 'new_ep_m014'
\n",
"\t- 'new_ep_m1524'
\n",
"\t- 'new_ep_m2534'
\n",
"\t- 'new_ep_m3544'
\n",
"\t- 'new_ep_m4554'
\n",
"\t- 'new_ep_m5564'
\n",
"\t- 'new_ep_m65'
\n",
"\t- 'new_ep_f014'
\n",
"\t- 'new_ep_f1524'
\n",
"\t- 'new_ep_f2534'
\n",
"\t- 'new_ep_f3544'
\n",
"\t- 'new_ep_f4554'
\n",
"\t- 'new_ep_f5564'
\n",
"\t- 'new_ep_f65'
\n",
"\t- 'newrel_m014'
\n",
"\t- 'newrel_m1524'
\n",
"\t- 'newrel_m2534'
\n",
"\t- 'newrel_m3544'
\n",
"\t- 'newrel_m4554'
\n",
"\t- 'newrel_m5564'
\n",
"\t- 'newrel_m65'
\n",
"\t- 'newrel_f014'
\n",
"\t- 'newrel_f1524'
\n",
"\t- 'newrel_f2534'
\n",
"\t- 'newrel_f3544'
\n",
"\t- 'newrel_f4554'
\n",
"\t- 'newrel_f5564'
\n",
"\t- 'newrel_f65'
\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",
"A tibble: 6 × 4\n",
"\n",
"\t| country | year | group | n |
\n",
"\t| <chr> | <int> | <chr> | <int> |
\n",
"\n",
"\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",
"\n",
"
\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",
"A tibble: 6 × 4\n",
"\n",
"\t| country | year | group | n |
\n",
"\t| <chr> | <int> | <chr> | <int> |
\n",
"\n",
"\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",
"\n",
"
\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",
"A tibble: 6 × 6\n",
"\n",
"\t| country | year | type | method | age_group | n |
\n",
"\t| <chr> | <int> | <chr> | <chr> | <chr> | <int> |
\n",
"\n",
"\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",
"\n",
"
\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",
"A tibble: 6 × 6\n",
"\n",
"\t| country | year | type | method | age_group | n |
\n",
"\t| <chr> | <int> | <chr> | <chr> | <chr> | <int> |
\n",
"\n",
"\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",
"\n",
"
\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",
"A grouped_df: 8 × 3\n",
"\n",
"\t| country | method | count |
\n",
"\t| <chr> | <chr> | <int> |
\n",
"\n",
"\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",
"\n",
"
\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
}