Introduction to Tidyverse
Introduction to Tidyverse
Our work today
Introduction
Data manegement using dplyr
Taming your data using readr
Tidy data with tidyR
Extra packages
Intro to data visualization
If you prefer, the R code for this presentation is available here. The datasets can be downloaded here.
Setting up
After you download our material, please set your working directory to the folder where you saved the material. If you don’t like to set up working directories, Rstudio provide the rprojects tools, that basically connects everything for you from the beggining.
Just go on file>newproject>new_folder and save. Then, put everything in this folder, and you have everything you need to work.
Introduction
The tidyverse is nothing more than a set of R packages built together to help us doing data science in R. The packages all share the same underlying design philosophy, grammar, and data structures. Therefore, if you learn one, the other packages come easier. The main packages of tidyverse are:
dplyr: for data manipulation
ggplot2: for data visualization
tidyr: for modeling and data management
purrr: for optimize your code and for functional programming
readr: for open and organize the data
Today, we will mostly go over the beautiful world of data management using dplyr, readr, and tidyr. I strongly suggest you to add also ggplot2 to the list of things you should learn how to work with. I provide some extra material about ggplot2 here in the end of this file.
How did I learn all this?
I have four main sources for the things we discuss here:
Eric Dunford’s GSA workshop last semester also inspired this material.
Why should I use the tidyverse packages?
The main advantages:
Easier to perform data management compared to base R
Increase readability of your code
Integrates well a series of useful package
Advanced programmers do, therefore, very likely you get a code full of pipes and tidyverse packages in the future.
Getting ready
Instalattion
# Install from CRAN
install.packages("tidyverse")
# Or the development version from GitHub install.packages('devtools')
devtools::install_github("hadley/tidyverse")
library(tidyverse)
library(conflicted)
Checking conflicts
library(conflicted)
conflict_prefer("select", "dplyr")
conflict_prefer("filter", "dplyr")
The pipe
The packages on tidyverse all rely on using the a shortcut function called %>%
from the package magritt
. The pipe is your friend, remember that.
The idea behind the pipe is quite simple: you pipe things within each other. The goal is to avoid how R reads codes from inside to outside.
The logic with pipe: first the object, then the functions, and then a sequence of functions. The operator makes it possible to easily chain a sequence of calculations
# Example 1
# In base R
round(exp(diff(log(runif(100, 0, 1)))), 1)
# In pipe
runif(100, 0, 1) %>% log() %>% diff() %>% exp() %>% round(., 1) # or round(1)
# NOTE HERE: If is a tidyverse function, the data is always the first
# argument, therefore, one doesn't need to add the period. If it is not, one
# must add the period in the data argument
# data %>% function_tidyverse() %>% lm( y~x, data=. )
mtcars %>% lm(mpg ~ cyl, data = .) %>% coef()
(Intercept) cyl
37.88458 -2.87579
# Example 2: Graph
plot(density(rnorm(1000, 0, 1)))
# With pipe
rnorm(1000, 0, 1) %>% density() %>% plot()
Dplyr for data management
The dplyr is the most famous tidyverse package. It deals with data management. It is my favorite package in the entire R world. I started working with dplyr two years after learning R, and it really made my life easier.
Loading the data
We begin our work using the dataset results
. The data has the results of all the international soccer matches from 1872 to 2018. The data can be downloaded here
d <- read_csv("results.csv")
# The first dplyr command: tibble data frame
d <- tbl_df(d) # Nice to print
d
# A tibble: 39,669 x 9
date home_team away_team home_score away_score tournament city
<date> <chr> <chr> <int> <int> <chr> <chr>
1 1872-11-30 Scotland England 0 0 Friendly Glas~
2 1873-03-08 England Scotland 4 2 Friendly Lond~
3 1874-03-07 Scotland England 2 1 Friendly Glas~
4 1875-03-06 England Scotland 2 2 Friendly Lond~
5 1876-03-04 Scotland England 3 0 Friendly Glas~
6 1876-03-25 Scotland Wales 4 0 Friendly Glas~
7 1877-03-03 England Scotland 1 3 Friendly Lond~
8 1877-03-05 Wales Scotland 0 2 Friendly Wrex~
9 1878-03-02 Scotland England 7 2 Friendly Glas~
10 1878-03-23 Scotland Wales 9 0 Friendly Glas~
# ... with 39,659 more rows, and 2 more variables: country <chr>,
# neutral <lgl>
Functions as verbs.
The most useful
- select(): select columns
- mutate(): create new variables, change existing
- filter(): subset your data by some criterion
- summarize(): summarize your data in some way
- group_by(): group your data by a variable
- slice(): grab specific rows
Some others
- count(): count your data
- arrange(): arrange your data by a column or variable
- distinct(): gather all distinct values of a variable
- n_distinct(): count how many distinct values you have (only works with summarize)
- n(): count how many observation you have for a subgroup
- sample_n(): Grab an N sample of your data
- sampsle_frac(): Grab a sample that is some fraction of your total data
- ungroup(): ungroup grouped data by a variable
- glimpse(): quickly preview the data
- top_n(): get the top N number of entries from a data frame
- slice(): grab specific rows
Select : To select collumns
# Base R
d_old <- d[, c("date", "away_score", "home_score")]
# Dplyr
d %>%
select(., date, home_team, away_team)
# A tibble: 39,669 x 3
date home_team away_team
<date> <chr> <chr>
1 1872-11-30 Scotland England
2 1873-03-08 England Scotland
3 1874-03-07 Scotland England
4 1875-03-06 England Scotland
5 1876-03-04 Scotland England
6 1876-03-25 Scotland Wales
7 1877-03-03 England Scotland
8 1877-03-05 Wales Scotland
9 1878-03-02 Scotland England
10 1878-03-23 Scotland Wales
# ... with 39,659 more rows
# OR
d %>%
select(., 2:3, -5)
# A tibble: 39,669 x 2
home_team away_team
<chr> <chr>
1 Scotland England
2 England Scotland
3 Scotland England
4 England Scotland
5 Scotland England
6 Scotland Wales
7 England Scotland
8 Wales Scotland
9 Scotland England
10 Scotland Wales
# ... with 39,659 more rows
Filter : To select rows
# More than 1.000 favorites
d %>%
filter(home_team == "Brazil")
# A tibble: 552 x 9
date home_team away_team home_score away_score tournament city
<date> <chr> <chr> <int> <int> <chr> <chr>
1 1916-07-08 Brazil Chile 1 1 Copa Amér~ Buen~
2 1916-07-12 Brazil Uruguay 1 2 Copa Amér~ Buen~
3 1917-10-12 Brazil Chile 5 0 Copa Amér~ Mont~
4 1919-05-11 Brazil Chile 6 0 Copa Amér~ Rio ~
5 1919-05-18 Brazil Argentina 3 1 Copa Amér~ Rio ~
6 1919-05-26 Brazil Uruguay 2 2 Copa Amér~ Rio ~
7 1919-05-29 Brazil Uruguay 1 0 Copa Amér~ Rio ~
8 1919-06-01 Brazil Argentina 3 3 Friendly Rio ~
9 1920-09-18 Brazil Uruguay 0 6 Copa Amér~ Viña~
10 1921-10-12 Brazil Paraguay 3 0 Copa Amér~ Buen~
# ... with 542 more rows, and 2 more variables: country <chr>,
# neutral <lgl>
# Base R
d[d$home_team == "Brazil", ]
# A tibble: 552 x 9
date home_team away_team home_score away_score tournament city
<date> <chr> <chr> <int> <int> <chr> <chr>
1 1916-07-08 Brazil Chile 1 1 Copa Amér~ Buen~
2 1916-07-12 Brazil Uruguay 1 2 Copa Amér~ Buen~
3 1917-10-12 Brazil Chile 5 0 Copa Amér~ Mont~
4 1919-05-11 Brazil Chile 6 0 Copa Amér~ Rio ~
5 1919-05-18 Brazil Argentina 3 1 Copa Amér~ Rio ~
6 1919-05-26 Brazil Uruguay 2 2 Copa Amér~ Rio ~
7 1919-05-29 Brazil Uruguay 1 0 Copa Amér~ Rio ~
8 1919-06-01 Brazil Argentina 3 3 Friendly Rio ~
9 1920-09-18 Brazil Uruguay 0 6 Copa Amér~ Viña~
10 1921-10-12 Brazil Paraguay 3 0 Copa Amér~ Buen~
# ... with 542 more rows, and 2 more variables: country <chr>,
# neutral <lgl>
# Which one do you prefer???
# More than one condition
d %>%
filter(home_team == "Brazil", home_score - away_score > 0) %>%
select(date, away_team, tournament)
# A tibble: 395 x 3
date away_team tournament
<date> <chr> <chr>
1 1917-10-12 Chile Copa América
2 1919-05-11 Chile Copa América
3 1919-05-18 Argentina Copa América
4 1919-05-29 Uruguay Copa América
5 1921-10-12 Paraguay Copa América
6 1922-10-15 Argentina Copa América
7 1922-10-22 Paraguay Copa América
8 1922-10-22 Argentina Copa Roca
9 1922-10-29 Paraguay Friendly
10 1923-11-22 Paraguay Friendly
# ... with 385 more rows
Mutate: To create new variables
library(conflicted)
conflict_prefer("select", "dplyr")
conflict_prefer("filter", "dplyr")
# Add the difference of goals, and a id for
# cases when the difference of gols is large, and select what we did
# only for Brazil
d %>%
mutate(dif = abs(away_score - home_score),
goleada = ifelse(dif > 5, "Goleada", "Normal Result")) %>%
filter(home_team=="Brazil" | away_team=="Brazil",
goleada=="Goleada")
# A tibble: 41 x 11
date home_team away_team home_score away_score tournament city
<date> <chr> <chr> <int> <int> <chr> <chr>
1 1919-05-11 Brazil Chile 6 0 Copa Amér~ Rio ~
2 1920-09-18 Brazil Uruguay 0 6 Copa Amér~ Viña~
3 1945-02-21 Brazil Ecuador 9 2 Copa Amér~ Sant~
4 1949-04-03 Brazil Ecuador 9 1 Copa Amér~ Rio ~
5 1949-04-10 Brazil Bolivia 10 1 Copa Amér~ São ~
6 1949-04-24 Brazil Peru 7 1 Copa Amér~ Rio ~
7 1949-05-11 Brazil Paraguay 7 0 Copa Amér~ Rio ~
8 1950-07-09 Brazil Sweden 7 1 FIFA Worl~ Rio ~
9 1953-03-01 Bolivia Brazil 1 8 Copa Amér~ Lima
10 1956-03-13 Brazil Costa Ri~ 7 1 Pan Ameri~ Mexi~
# ... with 31 more rows, and 4 more variables: country <chr>,
# neutral <lgl>, dif <int>, goleada <chr>
# NOTE the ifelse is a extremely useful function
#ifelse(condition, TRUE, FALSE)
# Beautiful right?
# Base R
d_g <- d
d_g$dif <- abs(d$home_score - d$away_score)
d_g$goleada <- ifelse(d_g$dif >5, "Goleada", "NR")
d_g <- d_g[c(d$home_team=="Brazil" | d$away_team=="Brazil") &
d_g$goleada==1, c("home_team", "away_score", "goleada", "dif")]
Arrange: To order de data by a particular variable
# What was the largest difference in gols?
d %>%
mutate(dif = abs(away_score - home_score)) %>%
arrange(desc(dif)) %>%
slice(1)
# A tibble: 1 x 10
date home_team away_team home_score away_score tournament city
<date> <chr> <chr> <int> <int> <chr> <chr>
1 2001-04-11 Australia American~ 31 0 FIFA Worl~ Coff~
# ... with 3 more variables: country <chr>, neutral <lgl>, dif <int>
Slice: to slice your data by rows
# The top 5 goleadas?
d %>%
mutate(dif = abs(away_score - home_score)) %>%
arrange(desc(dif)) %>%
slice(1:5) # top_n(5) here would also do the trick
# A tibble: 5 x 10
date home_team away_team home_score away_score tournament city
<date> <chr> <chr> <int> <int> <chr> <chr>
1 2001-04-11 Australia American~ 31 0 FIFA Worl~ Coff~
2 1979-08-30 Fiji Kiribati 24 0 South Pac~ Naus~
3 2001-04-09 Australia Tonga 22 0 FIFA Worl~ Coff~
4 2005-03-11 Guam Korea DPR 0 21 EAFF Cham~ Taip~
5 1987-12-15 American~ Papua Ne~ 0 20 South Pac~ Noum~
# ... with 3 more variables: country <chr>, neutral <lgl>, dif <int>
Group by + sumarize : forget about loops
First: group by a particular variables
Second: summarize the data with new statistics.
Summarize: Turn many rows into one.
Examples:
- min(x) - minimum value of vector x.
- max(x) - maximum value of vector x.
- mean(x) - mean value of vector x.
- median(x) - median value of vector x.
- quantile(x, p) - pth quantile of vector x.
- sd(x) - standard deviation of vector x.
- var(x) - variance of vector x.
- IQR(x) - Inter Quartile Range (IQR) of vector x.
- diff(range(x)) - total range of vector x.
# Data on gols scored by home teams
d %>%
group_by(home_team) %>%
summarise(mean_home_gols = mean(home_score, na.rm = TRUE), sd_home_gols = sd(home_score),
mean_home_gols_op = mean(away_score), count = n()) %>%
ungroup() %>%
top_n(., 10, wt = mean_home_gols) # note here, it does
# A tibble: 10 x 5
home_team mean_home_gols sd_home_gols mean_home_gols_op count
<chr> <dbl> <dbl> <dbl> <int>
1 Cascadia 4 NaN 0 1
2 Gotland 3.35 2.96 2.1 20
3 Guersney 3.25 2.51 1.04 24
4 Kárpátalja 3.4 1.14 1.8 5
5 Micronesia FS 3.5 4.95 9 2
6 North Vietnam 3.6 3.13 1.8 5
7 Northern Cyprus 3.70 3.97 0.609 23
8 Sápmi 4.12 5.75 1.5 16
9 Somaliland 3.5 4.95 2.5 2
10 Western Sahara 3.33 1.53 2.33 3
# not give you in order you can add arrange
Be careful, summarize is not the same as mutate. Check the example below, what is the difference:
d %>%
group_by(home_team) %>%
mutate(mean_home_gols = mean(home_score, na.rm = TRUE), sd_home_gols = sd(home_score),
mean_home_gols_op = mean(away_score), count = n()) %>% ungroup() %>%
select(home_team, mean_home_gols) %>%
top_n(., 10, wt = mean_home_gols)
# A tibble: 16 x 2
home_team mean_home_gols
<chr> <dbl>
1 Sápmi 4.12
2 Sápmi 4.12
3 Sápmi 4.12
4 Sápmi 4.12
5 Sápmi 4.12
6 Sápmi 4.12
7 Sápmi 4.12
8 Sápmi 4.12
9 Sápmi 4.12
10 Sápmi 4.12
11 Sápmi 4.12
12 Sápmi 4.12
13 Sápmi 4.12
14 Sápmi 4.12
15 Sápmi 4.12
16 Sápmi 4.12
You can go crazy, and get combinations using group_by
# Proportion of victories of Brazil on different tournaments against each
# opponent.
d %>%
filter(home_team == "Brazil") %>%
mutate(dif = home_score - away_score, victory = ifelse(dif > 0, 1, 0)) %>%
group_by(away_team, tournament) %>%
summarise(mean_victory_brazil = mean(victory, na.rm = TRUE), number_games = n()) %>%
filter(away_team == "Argentina")
# A tibble: 7 x 4
# Groups: away_team [1]
away_team tournament mean_victory_brazil number_games
<chr> <chr> <dbl> <int>
1 Argentina Atlantic Cup 1 1
2 Argentina Confederations Cup 1 1
3 Argentina Copa América 0.7 10
4 Argentina Copa Roca 0.538 13
5 Argentina FIFA World Cup 0 1
6 Argentina FIFA World Cup qualification 1 3
7 Argentina Friendly 0.5 16
CHECK IF YOU PREFER A FOR LOOP
d_b <- d[d$home_team == "Brazil", ]
d_b$dif <- d_b$home_score - d_b$away_score
d_b$victory <- ifelse(d_b$dif > 0, 1, 0)
j = 1
i = 1
# Create the container
out <- data_frame()
for (j in 1:unique(d_b$away_team)) {
for (i in 1:unique(d_b$tournament)) {
res <- d_b[d_b$away_team == unique(d_b$away_team)[j] & d_b$away_team ==
unique(d_b$tournament)[i], "dif"]
}
}
# I gave up after a few minutes trying
Some other useful functions
Glimpse to see your data
glimpse(d)
Observations: 39,669
Variables: 9
$ date <date> 1872-11-30, 1873-03-08, 1874-03-07, 1875-03-06, 18...
$ home_team <chr> "Scotland", "England", "Scotland", "England", "Scot...
$ away_team <chr> "England", "Scotland", "England", "Scotland", "Engl...
$ home_score <int> 0, 4, 2, 2, 3, 4, 1, 0, 7, 9, 2, 5, 0, 5, 2, 5, 0, ...
$ away_score <int> 0, 2, 1, 2, 0, 0, 3, 2, 2, 0, 1, 4, 3, 4, 3, 1, 1, ...
$ tournament <chr> "Friendly", "Friendly", "Friendly", "Friendly", "Fr...
$ city <chr> "Glasgow", "London", "Glasgow", "London", "Glasgow"...
$ country <chr> "Scotland", "England", "Scotland", "England", "Scot...
$ neutral <lgl> FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FA...
Count
# Count here is a wrap for group_by and summarize n()
# Basically count the number of rows by group
d %>%
count(home_team, tournament) %>%
arrange(desc(n))
# A tibble: 1,710 x 3
home_team tournament n
<chr> <chr> <int>
1 Germany Friendly 289
2 France Friendly 286
3 Mexico Friendly 275
4 Hungary Friendly 272
5 Sweden Friendly 250
6 Austria Friendly 246
7 Belgium Friendly 242
8 Poland Friendly 241
9 Netherlands Friendly 239
10 Switzerland Friendly 238
# ... with 1,700 more rows
Select Helper functions
starts_with()
: starts with a prefixends_with()
: ends with a prefixcontains()
: contains a literal stringmatches()
: matches a regular expressionnum_range()
: a numerical range like x01, x02, x03.one_of()
: variables in character vector.everything()
: all variables.
# New Got Data:
new_got <- read_csv("battles.csv")
glimpse(new_got)
Observations: 38
Variables: 25
$ name <chr> "Battle of the Golden Tooth", "Battle at th...
$ year <int> 298, 298, 298, 298, 298, 298, 298, 299, 299...
$ battle_number <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, ...
$ attacker_king <chr> "Joffrey/Tommen Baratheon", "Joffrey/Tommen...
$ defender_king <chr> "Robb Stark", "Robb Stark", "Robb Stark", "...
$ attacker_1 <chr> "Lannister", "Lannister", "Lannister", "Sta...
$ attacker_2 <chr> NA, NA, NA, NA, "Tully", "Tully", NA, NA, N...
$ attacker_3 <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,...
$ attacker_4 <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,...
$ defender_1 <chr> "Tully", "Baratheon", "Tully", "Lannister",...
$ defender_2 <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,...
$ defender_3 <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,...
$ defender_4 <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,...
$ attacker_outcome <chr> "win", "win", "win", "loss", "win", "win", ...
$ battle_type <chr> "pitched battle", "ambush", "pitched battle...
$ major_death <int> 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1...
$ major_capture <int> 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1...
$ attacker_size <int> 15000, NA, 15000, 18000, 1875, 6000, NA, NA...
$ defender_size <int> 4000, 120, 10000, 20000, 6000, 12625, NA, N...
$ attacker_commander <chr> "Jaime Lannister", "Gregor Clegane", "Jaime...
$ defender_commander <chr> "Clement Piper, Vance", "Beric Dondarrion",...
$ summer <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1...
$ location <chr> "Golden Tooth", "Mummer's Ford", "Riverrun"...
$ region <chr> "The Westerlands", "The Riverlands", "The R...
$ note <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, "Greyjo...
# Selecting
new_got %>%
select(name, year, contains("king"),
starts_with("battle")) %>%
glimpse()
Observations: 38
Variables: 6
$ name <chr> "Battle of the Golden Tooth", "Battle at the Mum...
$ year <int> 298, 298, 298, 298, 298, 298, 298, 299, 299, 299...
$ attacker_king <chr> "Joffrey/Tommen Baratheon", "Joffrey/Tommen Bara...
$ defender_king <chr> "Robb Stark", "Robb Stark", "Robb Stark", "Joffr...
$ battle_number <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 1...
$ battle_type <chr> "pitched battle", "ambush", "pitched battle", "p...
# Reordering
new_got %>%
select(name, year, contains("king"),
starts_with("battle"), everything()) %>%
glimpse()
Observations: 38
Variables: 25
$ name <chr> "Battle of the Golden Tooth", "Battle at th...
$ year <int> 298, 298, 298, 298, 298, 298, 298, 299, 299...
$ attacker_king <chr> "Joffrey/Tommen Baratheon", "Joffrey/Tommen...
$ defender_king <chr> "Robb Stark", "Robb Stark", "Robb Stark", "...
$ battle_number <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, ...
$ battle_type <chr> "pitched battle", "ambush", "pitched battle...
$ attacker_1 <chr> "Lannister", "Lannister", "Lannister", "Sta...
$ attacker_2 <chr> NA, NA, NA, NA, "Tully", "Tully", NA, NA, N...
$ attacker_3 <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,...
$ attacker_4 <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,...
$ defender_1 <chr> "Tully", "Baratheon", "Tully", "Lannister",...
$ defender_2 <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,...
$ defender_3 <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,...
$ defender_4 <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,...
$ attacker_outcome <chr> "win", "win", "win", "loss", "win", "win", ...
$ major_death <int> 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1...
$ major_capture <int> 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1...
$ attacker_size <int> 15000, NA, 15000, 18000, 1875, 6000, NA, NA...
$ defender_size <int> 4000, 120, 10000, 20000, 6000, 12625, NA, N...
$ attacker_commander <chr> "Jaime Lannister", "Gregor Clegane", "Jaime...
$ defender_commander <chr> "Clement Piper, Vance", "Beric Dondarrion",...
$ summer <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1...
$ location <chr> "Golden Tooth", "Mummer's Ford", "Riverrun"...
$ region <chr> "The Westerlands", "The Riverlands", "The R...
$ note <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, "Greyjo...
# Deleting some not relevant information
new_got %>%
select(name, year, contains("king"),
starts_with("battle"), everything(),
-matches(c("1$|2$|3$|4$"))) %>%
glimpse()
Observations: 38
Variables: 17
$ name <chr> "Battle of the Golden Tooth", "Battle at th...
$ year <int> 298, 298, 298, 298, 298, 298, 298, 299, 299...
$ attacker_king <chr> "Joffrey/Tommen Baratheon", "Joffrey/Tommen...
$ defender_king <chr> "Robb Stark", "Robb Stark", "Robb Stark", "...
$ battle_number <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, ...
$ battle_type <chr> "pitched battle", "ambush", "pitched battle...
$ attacker_outcome <chr> "win", "win", "win", "loss", "win", "win", ...
$ major_death <int> 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1...
$ major_capture <int> 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1...
$ attacker_size <int> 15000, NA, 15000, 18000, 1875, 6000, NA, NA...
$ defender_size <int> 4000, 120, 10000, 20000, 6000, 12625, NA, N...
$ attacker_commander <chr> "Jaime Lannister", "Gregor Clegane", "Jaime...
$ defender_commander <chr> "Clement Piper, Vance", "Beric Dondarrion",...
$ summer <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1...
$ location <chr> "Golden Tooth", "Mummer's Ford", "Riverrun"...
$ region <chr> "The Westerlands", "The Riverlands", "The R...
$ note <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, "Greyjo...
Taming your data using readr
The idea of taming your data sounds fancy, but it is basically getting your columns on the right format. For this, the tidyverse packages are extremely useful. Here, we will be using the packages `
Functions to import data
read_csv()
: comma separated (CSV) filesread_tsv()
: tab separated filesread_delim()
: general delimited filesread_fwf()
: fixed width filesread_table()
: tabular files where columns are separated by white-space.read_log()
: web log files
Functions to Tame your data: Parse Family
parse_logical
parse_integer
parse_factor
parse_character
parse_date
You can you this function to fix and to identify problems on your variables.
# Numeric
x <- c("1", "2", "3")
parse_number(x)
[1] 1 2 3
# Character
names <- c("Tiago", "Augusto", "ventura", 3)
parse_character(names)
[1] "Tiago" "Augusto" "ventura" "3"
# Or date
parse_date("30 december 1988", format = "%d %B %y")
[1] NA
parse_date("30 december 1988", format = "%d %B %Y")
[1] "1988-12-30"
# More interesting: Return the error for you
x <- c("1", "2", "3", "tiago")
parse_number(x)
[1] 1 2 3 NA
attr(,"problems")
# A tibble: 1 x 4
row col expected actual
<int> <int> <chr> <chr>
1 4 NA a number tiago
# Also
x <- c("10%", "$1000", "10 reais")
parse_number(x)
[1] 10 1000 10
You can use all the parse functions when opening your data just replacing parse_*
by col_*
got_cd <- read_csv("character-deaths.csv")
glimpse(got_cd)
Observations: 917
Variables: 13
$ name <chr> "Addam Marbrand", "Aegon Frey (Jinglebell)", "Ae...
$ Allegiances <chr> "Lannister", "None", "House Targaryen", "House G...
$ Death_y <chr> "na", "299", NA, "300", NA, NA, "300", "300", NA...
$ Book_Death <chr> NA, "3", "na", "5", NA, NA, "4", "5", NA, NA, "2...
$ Death_Chapter <chr> NA, "51", ".", "20", NA, NA, "35", NA, NA, NA, "...
$ Book_Intro <chr> "56", "49", "5", "20", ",", NA, "21", "59", "11"...
$ Gender <int> 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, ...
$ Nobility <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, ...
$ GoT <int> 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, ...
$ CoK <int> 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, ...
$ SoS <int> 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, ...
$ FfC <int> 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, ...
$ DwD <int> 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, ...
Some numerical variables come out as characters
# Fix
got_cd <- read_csv("character-deaths.csv", col_types = cols(Death_y = col_number(),
Book_Death = col_number(), Death_Chapter = col_number(), Book_Intro = col_number()))
glimpse(got_cd)
Observations: 917
Variables: 13
$ name <chr> "Addam Marbrand", "Aegon Frey (Jinglebell)", "Ae...
$ Allegiances <chr> "Lannister", "None", "House Targaryen", "House G...
$ Death_y <dbl> NA, 299, NA, 300, NA, NA, 300, 300, NA, NA, 299,...
$ Book_Death <dbl> NA, 3, NA, 5, NA, NA, 4, 5, NA, NA, 2, NA, 5, NA...
$ Death_Chapter <dbl> NA, 51, NA, 20, NA, NA, 35, NA, NA, NA, 56, NA, ...
$ Book_Intro <dbl> 56, 49, 5, 20, NA, NA, 21, 59, 11, 0, 50, 54, 18...
$ Gender <int> 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, ...
$ Nobility <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, ...
$ GoT <int> 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, ...
$ CoK <int> 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, ...
$ SoS <int> 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, ...
$ FfC <int> 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, ...
$ DwD <int> 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, ...
# Check the problem
problems(got_cd)
# A tibble: 4 x 5
row col expected actual file
<int> <chr> <chr> <chr> <chr>
1 1 Death_y a number na 'character-deaths.csv'
2 3 Book_Death a number na 'character-deaths.csv'
3 3 Death_Chapter a number . 'character-deaths.csv'
4 5 Book_Intro a number , 'character-deaths.csv'
# Proper Fix
got_cd <- read_csv("character-deaths.csv", col_types = cols(Death_y = col_number(),
Book_Death = col_number(), Death_Chapter = col_number(), Book_Intro = col_number()),
na = c("", "NA", "na", ".", ","))
got_cd
# A tibble: 917 x 13
name Allegiances Death_y Book_Death Death_Chapter Book_Intro Gender
<chr> <chr> <dbl> <dbl> <dbl> <dbl> <int>
1 Adda~ Lannister NA NA NA 56 1
2 Aego~ None 299 3 51 49 1
3 Aego~ House Targ~ NA NA NA 5 1
4 Adra~ House Grey~ 300 5 20 20 1
5 Aemo~ Lannister NA NA NA NA 1
6 Aemo~ Baratheon NA NA NA NA 1
7 Aemo~ Night's Wa~ 300 4 35 21 1
8 Aeny~ None 300 5 NA 59 0
9 Aero~ House Grey~ NA NA NA 11 1
10 Aeth~ Night's Wa~ NA NA NA 0 1
# ... with 907 more rows, and 6 more variables: Nobility <int>, GoT <int>,
# CoK <int>, SoS <int>, FfC <int>, DwD <int>
Tidy Data using tidyR
Tidy data is a fancy name for data in the long format. A data is tidy when:
Each variable must have its own column.
Each observation must have its own row.
Untidy data
date | home_team | away_team | Atlantic Cup | Brazil Independence Cup | Confederations Cup | Copa América | Copa Bernardo O’Higgins | Copa Oswaldo Cruz | Copa Rio Branco | Copa Roca | FIFA World Cup | FIFA World Cup qualification | Friendly | Gold Cup | Mundialito | Pan American Championship | USA Cup |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1916-07-08 | Brazil | Chile | NA | NA | NA | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1916-07-12 | Brazil | Uruguay | NA | NA | NA | -1 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1917-10-12 | Brazil | Chile | NA | NA | NA | 5 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1919-05-11 | Brazil | Chile | NA | NA | NA | 6 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1919-05-18 | Brazil | Argentina | NA | NA | NA | 2 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1919-05-26 | Brazil | Uruguay | NA | NA | NA | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1919-05-29 | Brazil | Uruguay | NA | NA | NA | 1 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1919-06-01 | Brazil | Argentina | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 0 | NA | NA | NA | NA |
1920-09-18 | Brazil | Uruguay | NA | NA | NA | -6 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1921-10-12 | Brazil | Paraguay | NA | NA | NA | 3 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1921-10-23 | Brazil | Uruguay | NA | NA | NA | -1 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1922-09-17 | Brazil | Chile | NA | NA | NA | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1922-09-24 | Brazil | Paraguay | NA | NA | NA | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1922-10-01 | Brazil | Uruguay | NA | NA | NA | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1922-10-15 | Brazil | Argentina | NA | NA | NA | 2 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1922-10-22 | Brazil | Argentina | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA | NA | NA | NA |
1922-10-22 | Brazil | Paraguay | NA | NA | NA | 3 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1922-10-29 | Brazil | Paraguay | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA |
1923-11-11 | Brazil | Paraguay | NA | NA | NA | -1 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1923-11-22 | Brazil | Paraguay | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA |
1925-12-06 | Brazil | Paraguay | NA | NA | NA | 3 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1925-12-17 | Brazil | Paraguay | NA | NA | NA | 2 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1930-07-14 | Brazil | Yugoslavia | NA | NA | NA | NA | NA | NA | NA | NA | -1 | NA | NA | NA | NA | NA | NA |
1930-08-01 | Brazil | France | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA |
1930-08-10 | Brazil | Yugoslavia | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 3 | NA | NA | NA | NA |
1930-08-17 | Brazil | USA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA |
1931-09-06 | Brazil | Uruguay | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA | NA | NA | NA | NA |
1934-05-27 | Brazil | Spain | NA | NA | NA | NA | NA | NA | NA | NA | -2 | NA | NA | NA | NA | NA | NA |
1936-12-27 | Brazil | Peru | NA | NA | NA | 1 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1937-01-03 | Brazil | Chile | NA | NA | NA | 2 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1937-01-13 | Brazil | Paraguay | NA | NA | NA | 5 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1937-01-19 | Brazil | Uruguay | NA | NA | NA | 1 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1938-06-05 | Brazil | Poland | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA | NA | NA |
1938-06-12 | Brazil | Czechoslovakia | NA | NA | NA | NA | NA | NA | NA | NA | 0 | NA | NA | NA | NA | NA | NA |
1938-06-14 | Brazil | Czechoslovakia | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA | NA | NA |
1938-06-16 | Brazil | Italy | NA | NA | NA | NA | NA | NA | NA | NA | -1 | NA | NA | NA | NA | NA | NA |
1938-06-19 | Brazil | Sweden | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA | NA | NA |
1939-01-15 | Brazil | Argentina | NA | NA | NA | NA | NA | NA | NA | -4 | NA | NA | NA | NA | NA | NA | NA |
1939-01-22 | Brazil | Argentina | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA | NA | NA | NA |
1940-02-18 | Brazil | Argentina | NA | NA | NA | NA | NA | NA | NA | 0 | NA | NA | NA | NA | NA | NA | NA |
1940-02-25 | Brazil | Argentina | NA | NA | NA | NA | NA | NA | NA | -3 | NA | NA | NA | NA | NA | NA | NA |
1940-03-24 | Brazil | Uruguay | NA | NA | NA | NA | NA | NA | -1 | NA | NA | NA | NA | NA | NA | NA | NA |
1940-03-31 | Brazil | Uruguay | NA | NA | NA | NA | NA | NA | 0 | NA | NA | NA | NA | NA | NA | NA | NA |
1942-01-14 | Brazil | Chile | NA | NA | NA | 5 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1942-01-21 | Brazil | Peru | NA | NA | NA | 1 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1942-01-31 | Brazil | Ecuador | NA | NA | NA | 4 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1942-02-05 | Brazil | Paraguay | NA | NA | NA | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1944-05-14 | Brazil | Uruguay | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 5 | NA | NA | NA | NA |
1944-05-17 | Brazil | Uruguay | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 4 | NA | NA | NA | NA |
1945-01-21 | Brazil | Colombia | NA | NA | NA | 3 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1945-02-07 | Brazil | Uruguay | NA | NA | NA | 3 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1945-02-21 | Brazil | Ecuador | NA | NA | NA | 7 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1945-12-16 | Brazil | Argentina | NA | NA | NA | NA | NA | NA | NA | -1 | NA | NA | NA | NA | NA | NA | NA |
1945-12-20 | Brazil | Argentina | NA | NA | NA | NA | NA | NA | NA | 4 | NA | NA | NA | NA | NA | NA | NA |
1945-12-23 | Brazil | Argentina | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA | NA | NA | NA |
1946-01-23 | Brazil | Uruguay | NA | NA | NA | 1 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1946-01-29 | Brazil | Paraguay | NA | NA | NA | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1946-02-03 | Brazil | Chile | NA | NA | NA | 4 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1947-04-01 | Brazil | Uruguay | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA | NA | NA | NA | NA |
1949-04-03 | Brazil | Ecuador | NA | NA | NA | 8 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1949-04-10 | Brazil | Bolivia | NA | NA | NA | 9 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1949-04-13 | Brazil | Chile | NA | NA | NA | 1 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1949-04-17 | Brazil | Colombia | NA | NA | NA | 5 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1949-04-24 | Brazil | Peru | NA | NA | NA | 6 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1949-04-30 | Brazil | Uruguay | NA | NA | NA | 4 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1949-05-08 | Brazil | Paraguay | NA | NA | NA | -1 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1949-05-11 | Brazil | Paraguay | NA | NA | NA | 7 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1950-05-06 | Brazil | Uruguay | NA | NA | NA | NA | NA | NA | -1 | NA | NA | NA | NA | NA | NA | NA | NA |
1950-05-07 | Brazil | Paraguay | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1950-05-13 | Brazil | Paraguay | NA | NA | NA | NA | NA | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1950-05-14 | Brazil | Uruguay | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA | NA | NA | NA | NA |
1950-06-24 | Brazil | Mexico | NA | NA | NA | NA | NA | NA | NA | NA | 4 | NA | NA | NA | NA | NA | NA |
1950-06-28 | Brazil | Switzerland | NA | NA | NA | NA | NA | NA | NA | NA | 0 | NA | NA | NA | NA | NA | NA |
1950-07-01 | Brazil | Yugoslavia | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA | NA | NA |
1950-07-09 | Brazil | Sweden | NA | NA | NA | NA | NA | NA | NA | NA | 6 | NA | NA | NA | NA | NA | NA |
1950-07-13 | Brazil | Spain | NA | NA | NA | NA | NA | NA | NA | NA | 5 | NA | NA | NA | NA | NA | NA |
1950-07-16 | Brazil | Uruguay | NA | NA | NA | NA | NA | NA | NA | NA | -1 | NA | NA | NA | NA | NA | NA |
1952-04-06 | Brazil | Mexico | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA |
1952-04-10 | Brazil | Peru | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 0 | NA |
1952-04-13 | Brazil | Panama | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 5 | NA |
1952-04-16 | Brazil | Uruguay | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA |
1953-03-12 | Brazil | Ecuador | NA | NA | NA | 2 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1953-03-15 | Brazil | Uruguay | NA | NA | NA | 1 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1953-03-23 | Brazil | Chile | NA | NA | NA | 1 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1953-03-27 | Brazil | Paraguay | NA | NA | NA | -1 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1953-04-01 | Brazil | Paraguay | NA | NA | NA | -1 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1954-03-14 | Brazil | Chile | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA | NA |
1954-06-16 | Brazil | Mexico | NA | NA | NA | NA | NA | NA | NA | NA | 5 | NA | NA | NA | NA | NA | NA |
1954-06-19 | Brazil | Yugoslavia | NA | NA | NA | NA | NA | NA | NA | NA | 0 | NA | NA | NA | NA | NA | NA |
1954-06-27 | Brazil | Hungary | NA | NA | NA | NA | NA | NA | NA | NA | -2 | NA | NA | NA | NA | NA | NA |
1955-09-18 | Brazil | Chile | NA | NA | NA | NA | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1955-09-20 | Brazil | Chile | NA | NA | NA | NA | 1 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1955-11-13 | Brazil | Paraguay | NA | NA | NA | NA | NA | 3 | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1955-11-17 | Brazil | Paraguay | NA | NA | NA | NA | NA | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1956-01-24 | Brazil | Chile | NA | NA | NA | -3 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1956-01-29 | Brazil | Paraguay | NA | NA | NA | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1956-02-01 | Brazil | Peru | NA | NA | NA | 1 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1956-03-01 | Brazil | Chile | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA |
1956-03-06 | Brazil | Peru | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA |
1956-03-13 | Brazil | Costa Rica | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 6 | NA |
1956-06-24 | Brazil | Uruguay | 2 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1956-07-01 | Brazil | Italy | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA |
1956-08-05 | Brazil | Czechoslovakia | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | -1 | NA | NA | NA | NA |
1956-08-08 | Brazil | Czechoslovakia | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 3 | NA | NA | NA | NA |
1957-03-13 | Brazil | Chile | NA | NA | NA | 2 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1957-03-21 | Brazil | Ecuador | NA | NA | NA | 6 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1957-03-24 | Brazil | Colombia | NA | NA | NA | 9 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1957-03-28 | Brazil | Uruguay | NA | NA | NA | -1 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1957-04-21 | Brazil | Peru | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA | NA |
1957-06-11 | Brazil | Portugal | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA |
1957-06-16 | Brazil | Portugal | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 3 | NA | NA | NA | NA |
1957-07-07 | Brazil | Argentina | NA | NA | NA | NA | NA | NA | NA | -1 | NA | NA | NA | NA | NA | NA | NA |
1957-07-10 | Brazil | Argentina | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA | NA | NA | NA |
1958-05-04 | Brazil | Paraguay | NA | NA | NA | NA | NA | 4 | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1958-05-07 | Brazil | Paraguay | NA | NA | NA | NA | NA | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1958-05-14 | Brazil | Bulgaria | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 4 | NA | NA | NA | NA |
1958-05-18 | Brazil | Bulgaria | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA |
1958-06-11 | Brazil | England | NA | NA | NA | NA | NA | NA | NA | NA | 0 | NA | NA | NA | NA | NA | NA |
1958-06-15 | Brazil | Russia | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA | NA | NA |
1958-06-19 | Brazil | Wales | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA | NA | NA |
1958-06-24 | Brazil | France | NA | NA | NA | NA | NA | NA | NA | NA | 3 | NA | NA | NA | NA | NA | NA |
1959-03-10 | Brazil | Peru | NA | NA | NA | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1959-03-15 | Brazil | Chile | NA | NA | NA | 3 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1959-03-26 | Brazil | Uruguay | NA | NA | NA | 2 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1959-03-29 | Brazil | Paraguay | NA | NA | NA | 3 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1959-05-13 | Brazil | England | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA |
1959-09-17 | Brazil | Chile | NA | NA | NA | NA | 7 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1959-09-20 | Brazil | Chile | NA | NA | NA | NA | 1 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1959-12-05 | Brazil | Paraguay | NA | NA | NA | 1 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1959-12-12 | Brazil | Uruguay | NA | NA | NA | -3 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1960-03-06 | Brazil | Mexico | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 0 | NA |
1960-03-15 | Brazil | Mexico | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA |
1960-06-29 | Brazil | Chile | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 4 | NA | NA | NA | NA |
1960-07-12 | Brazil | Argentina | 4 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1961-06-29 | Brazil | Paraguay | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA |
1962-04-21 | Brazil | Paraguay | NA | NA | NA | NA | NA | 6 | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1962-04-24 | Brazil | Paraguay | NA | NA | NA | NA | NA | 4 | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1962-05-06 | Brazil | Portugal | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA |
1962-05-09 | Brazil | Portugal | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA |
1962-05-12 | Brazil | Wales | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA |
1962-05-16 | Brazil | Wales | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA |
1962-05-30 | Brazil | Mexico | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA | NA | NA |
1962-06-02 | Brazil | Czechoslovakia | NA | NA | NA | NA | NA | NA | NA | NA | 0 | NA | NA | NA | NA | NA | NA |
1962-06-06 | Brazil | Spain | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA | NA | NA |
1962-06-10 | Brazil | England | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA | NA | NA |
1962-06-17 | Brazil | Czechoslovakia | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA | NA | NA |
1963-03-10 | Brazil | Peru | NA | NA | NA | 1 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1963-03-14 | Brazil | Colombia | NA | NA | NA | 4 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1963-03-17 | Brazil | Paraguay | NA | NA | NA | -2 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1963-03-27 | Brazil | Ecuador | NA | NA | NA | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1963-04-13 | Brazil | Argentina | NA | NA | NA | NA | NA | NA | NA | -1 | NA | NA | NA | NA | NA | NA | NA |
1963-04-16 | Brazil | Argentina | NA | NA | NA | NA | NA | NA | NA | 3 | NA | NA | NA | NA | NA | NA | NA |
1964-05-30 | Brazil | England | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 4 | NA | NA | NA | NA |
1964-06-03 | Brazil | Argentina | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | -3 | NA | NA | NA | NA |
1964-06-07 | Brazil | Portugal | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 3 | NA | NA | NA | NA |
1965-06-02 | Brazil | Belgium | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 5 | NA | NA | NA | NA |
1965-06-06 | Brazil | Germany | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA |
1965-06-09 | Brazil | Argentina | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 0 | NA | NA | NA | NA |
1965-09-07 | Brazil | Uruguay | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 3 | NA | NA | NA | NA |
1965-11-21 | Brazil | Hungary | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA |
1965-11-21 | Brazil | Russia | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 0 | NA | NA | NA | NA |
1966-05-14 | Brazil | Wales | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA |
1966-05-15 | Brazil | Chile | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 0 | NA | NA | NA | NA |
1966-05-18 | Brazil | Wales | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA |
1966-05-19 | Brazil | Chile | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA |
1966-06-04 | Brazil | Peru | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 4 | NA | NA | NA | NA |
1966-06-05 | Brazil | Poland | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 3 | NA | NA | NA | NA |
1966-06-08 | Brazil | Peru | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA |
1966-06-08 | Brazil | Poland | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA |
1966-06-12 | Brazil | Czechoslovakia | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA |
1966-06-15 | Brazil | Czechoslovakia | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 0 | NA | NA | NA | NA |
1966-07-12 | Brazil | Bulgaria | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA | NA | NA |
1966-07-15 | Brazil | Hungary | NA | NA | NA | NA | NA | NA | NA | NA | -2 | NA | NA | NA | NA | NA | NA |
1966-07-19 | Brazil | Portugal | NA | NA | NA | NA | NA | NA | NA | NA | -2 | NA | NA | NA | NA | NA | NA |
1968-06-09 | Brazil | Uruguay | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA | NA | NA | NA | NA |
1968-06-12 | Brazil | Uruguay | NA | NA | NA | NA | NA | NA | 4 | NA | NA | NA | NA | NA | NA | NA | NA |
1968-08-07 | Brazil | Argentina | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 3 | NA | NA | NA | NA |
1968-08-11 | Brazil | Argentina | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA |
1968-10-31 | Brazil | Mexico | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | -1 | NA | NA | NA | NA |
1968-11-03 | Brazil | Mexico | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA |
1968-12-14 | Brazil | Germany | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 0 | NA | NA | NA | NA |
1968-12-17 | Brazil | Yugoslavia | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 0 | NA | NA | NA | NA |
1968-12-19 | Brazil | Yugoslavia | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA |
1969-04-07 | Brazil | Peru | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA |
1969-04-09 | Brazil | Peru | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA |
1969-06-12 | Brazil | England | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA |
1969-08-21 | Brazil | Colombia | NA | NA | NA | NA | NA | NA | NA | NA | NA | 4 | NA | NA | NA | NA | NA |
1969-08-24 | Brazil | Venezuela | NA | NA | NA | NA | NA | NA | NA | NA | NA | 6 | NA | NA | NA | NA | NA |
1969-08-31 | Brazil | Paraguay | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA | NA |
1970-03-04 | Brazil | Argentina | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | -2 | NA | NA | NA | NA |
1970-03-08 | Brazil | Argentina | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA |
1970-03-22 | Brazil | Chile | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 5 | NA | NA | NA | NA |
1970-03-26 | Brazil | Chile | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA |
1970-04-12 | Brazil | Paraguay | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 0 | NA | NA | NA | NA |
1970-04-29 | Brazil | Austria | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA |
1970-06-03 | Brazil | Czechoslovakia | NA | NA | NA | NA | NA | NA | NA | NA | 3 | NA | NA | NA | NA | NA | NA |
1970-06-07 | Brazil | England | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA | NA | NA |
1970-06-10 | Brazil | Romania | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA | NA | NA |
1970-06-14 | Brazil | Peru | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA | NA | NA |
1970-06-17 | Brazil | Uruguay | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA | NA | NA |
1970-06-21 | Brazil | Italy | NA | NA | NA | NA | NA | NA | NA | NA | 3 | NA | NA | NA | NA | NA | NA |
1970-09-30 | Brazil | Mexico | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA |
1971-07-11 | Brazil | Austria | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 0 | NA | NA | NA | NA |
1971-07-14 | Brazil | Czechoslovakia | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA |
1971-07-18 | Brazil | Yugoslavia | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 0 | NA | NA | NA | NA |
1971-07-24 | Brazil | Paraguay | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA |
1972-04-26 | Brazil | Paraguay | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA |
1972-06-28 | Brazil | Czechoslovakia | NA | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1972-07-02 | Brazil | Yugoslavia | NA | 3 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1972-07-05 | Brazil | Scotland | NA | 1 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1972-07-09 | Brazil | Portugal | NA | 1 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1973-05-27 | Brazil | Bolivia | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 5 | NA | NA | NA | NA |
1974-03-31 | Brazil | Mexico | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 0 | NA | NA | NA | NA |
1974-04-07 | Brazil | Czechoslovakia | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA |
1974-04-14 | Brazil | Bulgaria | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA |
1974-04-17 | Brazil | Romania | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA |
1974-04-21 | Brazil | Haiti | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 4 | NA | NA | NA | NA |
1974-04-28 | Brazil | Greece | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 0 | NA | NA | NA | NA |
1974-05-01 | Brazil | Austria | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 0 | NA | NA | NA | NA |
1974-05-05 | Brazil | Ireland | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA |
1974-05-12 | Brazil | Paraguay | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA |
1974-06-13 | Brazil | Yugoslavia | NA | NA | NA | NA | NA | NA | NA | NA | 0 | NA | NA | NA | NA | NA | NA |
1974-06-26 | Brazil | German DR | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA | NA | NA |
1974-07-06 | Brazil | Poland | NA | NA | NA | NA | NA | NA | NA | NA | -1 | NA | NA | NA | NA | NA | NA |
1975-03-09 | Brazil | Portugal | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA |
1975-08-06 | Brazil | Argentina | NA | NA | NA | 1 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1975-08-13 | Brazil | Venezuela | NA | NA | NA | 6 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1975-09-30 | Brazil | Peru | NA | NA | NA | -2 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1976-04-28 | Brazil | Uruguay | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA | NA | NA | NA | NA |
1976-05-19 | Brazil | Argentina | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA | NA | NA | NA |
1976-05-23 | Brazil | England | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA |
1976-05-31 | Brazil | Italy | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 3 | NA | NA | NA | NA |
1976-06-09 | Brazil | Paraguay | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1976-12-01 | Brazil | Russia | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA |
1977-01-23 | Brazil | Bulgaria | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA |
1977-03-09 | Brazil | Colombia | NA | NA | NA | NA | NA | NA | NA | NA | NA | 6 | NA | NA | NA | NA | NA |
1977-03-20 | Brazil | Paraguay | NA | NA | NA | NA | NA | NA | NA | NA | NA | 0 | NA | NA | NA | NA | NA |
1977-06-08 | Brazil | England | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 0 | NA | NA | NA | NA |
1977-06-12 | Brazil | Germany | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 0 | NA | NA | NA | NA |
1977-06-19 | Brazil | Poland | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA |
1977-06-23 | Brazil | Scotland | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA |
1977-06-26 | Brazil | Yugoslavia | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 0 | NA | NA | NA | NA |
1977-06-30 | Brazil | France | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 0 | NA | NA | NA | NA |
1977-07-14 | Brazil | Bolivia | NA | NA | NA | NA | NA | NA | NA | NA | NA | 8 | NA | NA | NA | NA | NA |
1978-05-01 | Brazil | Peru | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 3 | NA | NA | NA | NA |
1978-05-17 | Brazil | Czechoslovakia | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA |
1978-06-03 | Brazil | Sweden | NA | NA | NA | NA | NA | NA | NA | NA | 0 | NA | NA | NA | NA | NA | NA |
1978-06-07 | Brazil | Spain | NA | NA | NA | NA | NA | NA | NA | NA | 0 | NA | NA | NA | NA | NA | NA |
1978-06-14 | Brazil | Peru | NA | NA | NA | NA | NA | NA | NA | NA | 3 | NA | NA | NA | NA | NA | NA |
1978-06-21 | Brazil | Poland | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA | NA | NA |
1978-06-24 | Brazil | Italy | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA | NA | NA |
1979-05-17 | Brazil | Paraguay | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 6 | NA | NA | NA | NA |
1979-05-31 | Brazil | Uruguay | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 4 | NA | NA | NA | NA |
1979-08-02 | Brazil | Argentina | NA | NA | NA | 1 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1979-08-16 | Brazil | Bolivia | NA | NA | NA | 2 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1979-10-31 | Brazil | Paraguay | NA | NA | NA | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1980-06-08 | Brazil | Mexico | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA |
1980-06-15 | Brazil | Russia | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | -1 | NA | NA | NA | NA |
1980-06-24 | Brazil | Chile | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA |
1980-06-29 | Brazil | Poland | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 0 | NA | NA | NA | NA |
1980-08-27 | Brazil | Uruguay | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA |
1980-10-30 | Brazil | Paraguay | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 6 | NA | NA | NA | NA |
1980-12-21 | Brazil | Switzerland | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA |
1981-01-07 | Brazil | Germany | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 3 | NA | NA |
1981-03-14 | Brazil | Chile | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA |
1981-03-22 | Brazil | Bolivia | NA | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA | NA |
1981-03-29 | Brazil | Venezuela | NA | NA | NA | NA | NA | NA | NA | NA | NA | 5 | NA | NA | NA | NA | NA |
1981-07-08 | Brazil | Spain | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA |
1981-10-28 | Brazil | Bulgaria | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 3 | NA | NA | NA | NA |
1982-01-26 | Brazil | German DR | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA |
1982-03-03 | Brazil | Czechoslovakia | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 0 | NA | NA | NA | NA |
1982-03-21 | Brazil | Germany | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA |
1982-05-05 | Brazil | Portugal | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA |
1982-05-19 | Brazil | Switzerland | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 0 | NA | NA | NA | NA |
1982-05-27 | Brazil | Ireland | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 7 | NA | NA | NA | NA |
1982-06-14 | Brazil | Russia | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA | NA | NA |
1982-06-18 | Brazil | Scotland | NA | NA | NA | NA | NA | NA | NA | NA | 3 | NA | NA | NA | NA | NA | NA |
1982-06-23 | Brazil | New Zealand | NA | NA | NA | NA | NA | NA | NA | NA | 4 | NA | NA | NA | NA | NA | NA |
1983-04-28 | Brazil | Chile | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA |
1983-09-01 | Brazil | Ecuador | NA | NA | NA | 5 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1983-09-14 | Brazil | Argentina | NA | NA | NA | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1983-10-20 | Brazil | Paraguay | NA | NA | NA | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1983-11-04 | Brazil | Uruguay | NA | NA | NA | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1984-06-10 | Brazil | England | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | -2 | NA | NA | NA | NA |
1984-06-17 | Brazil | Argentina | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 0 | NA | NA | NA | NA |
1984-06-21 | Brazil | Uruguay | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA |
1985-04-25 | Brazil | Colombia | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA |
1985-04-28 | Brazil | Peru | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | -1 | NA | NA | NA | NA |
1985-05-02 | Brazil | Uruguay | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA |
1985-05-05 | Brazil | Argentina | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA |
1985-06-08 | Brazil | Chile | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA |
1985-06-23 | Brazil | Paraguay | NA | NA | NA | NA | NA | NA | NA | NA | NA | 0 | NA | NA | NA | NA | NA |
1985-06-30 | Brazil | Bolivia | NA | NA | NA | NA | NA | NA | NA | NA | NA | 0 | NA | NA | NA | NA | NA |
1986-04-01 | Brazil | Peru | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 4 | NA | NA | NA | NA |
1986-04-08 | Brazil | German DR | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 3 | NA | NA | NA | NA |
1986-04-17 | Brazil | Finland | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 3 | NA | NA | NA | NA |
1986-04-30 | Brazil | Yugoslavia | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA |
1986-05-07 | Brazil | Chile | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 0 | NA | NA | NA | NA |
1986-06-06 | Brazil | Algeria | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA | NA | NA |
1986-06-16 | Brazil | Poland | NA | NA | NA | NA | NA | NA | NA | NA | 4 | NA | NA | NA | NA | NA | NA |
1986-06-21 | Brazil | France | NA | NA | NA | NA | NA | NA | NA | NA | 0 | NA | NA | NA | NA | NA | NA |
1987-06-21 | Brazil | Ecuador | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 3 | NA | NA | NA | NA |
1987-06-28 | Brazil | Venezuela | NA | NA | NA | 5 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1987-12-09 | Brazil | Chile | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA |
1987-12-12 | Brazil | Germany | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 0 | NA | NA | NA | NA |
1988-07-13 | Brazil | Saudi Arabia | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 3 | NA | NA | NA | NA |
1989-03-15 | Brazil | Ecuador | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA |
1989-04-12 | Brazil | Paraguay | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA |
1989-05-10 | Brazil | Peru | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 3 | NA | NA | NA | NA |
1989-06-08 | Brazil | Portugal | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 4 | NA | NA | NA | NA |
1989-06-16 | Brazil | Sweden | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | -1 | NA | NA | NA | NA |
1989-07-01 | Brazil | Venezuela | NA | NA | NA | 2 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1989-07-03 | Brazil | Peru | NA | NA | NA | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1989-07-07 | Brazil | Colombia | NA | NA | NA | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1989-07-09 | Brazil | Paraguay | NA | NA | NA | 2 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1989-07-12 | Brazil | Argentina | NA | NA | NA | 2 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1989-07-14 | Brazil | Paraguay | NA | NA | NA | 3 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1989-07-16 | Brazil | Uruguay | NA | NA | NA | 1 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1989-07-23 | Brazil | Japan | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA |
1989-08-20 | Brazil | Venezuela | NA | NA | NA | NA | NA | NA | NA | NA | NA | 6 | NA | NA | NA | NA | NA |
1989-09-03 | Brazil | Chile | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA | NA |
1989-11-14 | Brazil | Yugoslavia | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 0 | NA | NA | NA | NA |
1990-05-05 | Brazil | Bulgaria | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA |
1990-05-13 | Brazil | German DR | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 0 | NA | NA | NA | NA |
1990-06-10 | Brazil | Sweden | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA | NA | NA |
1990-06-16 | Brazil | Costa Rica | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA | NA | NA |
1990-06-20 | Brazil | Scotland | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA | NA | NA |
1990-06-24 | Brazil | Argentina | NA | NA | NA | NA | NA | NA | NA | NA | -1 | NA | NA | NA | NA | NA | NA |
1990-11-08 | Brazil | Chile | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 0 | NA | NA | NA | NA |
1991-02-27 | Brazil | Paraguay | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 0 | NA | NA | NA | NA |
1991-05-28 | Brazil | Bulgaria | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 3 | NA | NA | NA | NA |
1991-06-27 | Brazil | Argentina | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 0 | NA | NA | NA | NA |
1991-07-11 | Brazil | Uruguay | NA | NA | NA | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1991-07-13 | Brazil | Colombia | NA | NA | NA | -2 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1991-07-15 | Brazil | Ecuador | NA | NA | NA | 2 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1991-07-19 | Brazil | Colombia | NA | NA | NA | 2 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1991-10-30 | Brazil | Yugoslavia | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA |
1991-12-18 | Brazil | Czechoslovakia | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA |
1992-02-26 | Brazil | USA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 3 | NA | NA | NA | NA |
1992-04-15 | Brazil | Finland | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA |
1992-07-31 | Brazil | Mexico | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 5 | NA | NA | NA | NA |
1992-09-23 | Brazil | Costa Rica | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA |
1992-11-25 | Brazil | Uruguay | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | -1 | NA | NA | NA | NA |
1992-12-16 | Brazil | Germany | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA |
1993-03-17 | Brazil | Poland | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 0 | NA | NA | NA | NA |
1993-06-10 | Brazil | Germany | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 0 |
1993-06-13 | Brazil | England | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 0 |
1993-06-18 | Brazil | Peru | NA | NA | NA | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1993-06-21 | Brazil | Chile | NA | NA | NA | -1 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1993-06-24 | Brazil | Paraguay | NA | NA | NA | 3 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1993-06-27 | Brazil | Argentina | NA | NA | NA | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1993-07-14 | Brazil | Paraguay | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA |
1993-08-08 | Brazil | Mexico | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 0 | NA | NA | NA | NA |
1993-08-22 | Brazil | Ecuador | NA | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA | NA |
1993-08-29 | Brazil | Bolivia | NA | NA | NA | NA | NA | NA | NA | NA | NA | 6 | NA | NA | NA | NA | NA |
1993-09-05 | Brazil | Venezuela | NA | NA | NA | NA | NA | NA | NA | NA | NA | 4 | NA | NA | NA | NA | NA |
1993-09-19 | Brazil | Uruguay | NA | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA | NA |
1994-03-23 | Brazil | Argentina | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA |
1994-05-04 | Brazil | Iceland | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 3 | NA | NA | NA | NA |
1994-06-20 | Brazil | Russia | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA | NA | NA |
1994-06-24 | Brazil | Cameroon | NA | NA | NA | NA | NA | NA | NA | NA | 3 | NA | NA | NA | NA | NA | NA |
1994-06-28 | Brazil | Sweden | NA | NA | NA | NA | NA | NA | NA | NA | 0 | NA | NA | NA | NA | NA | NA |
1994-07-17 | Brazil | Italy | NA | NA | NA | NA | NA | NA | NA | NA | 0 | NA | NA | NA | NA | NA | NA |
1994-12-23 | Brazil | Serbia | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA |
1995-02-22 | Brazil | Slovakia | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 5 | NA | NA | NA | NA |
1995-03-29 | Brazil | Honduras | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 0 | NA | NA | NA | NA |
1995-06-04 | Brazil | Sweden | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA |
1995-06-06 | Brazil | Japan | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 3 | NA | NA | NA | NA |
1995-07-07 | Brazil | Ecuador | NA | NA | NA | 1 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1995-07-10 | Brazil | Peru | NA | NA | NA | 2 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1995-07-13 | Brazil | Colombia | NA | NA | NA | 3 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1995-07-17 | Brazil | Argentina | NA | NA | NA | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1995-10-11 | Brazil | Uruguay | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA |
1995-12-20 | Brazil | Colombia | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA |
1996-01-12 | Brazil | Canada | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 3 | NA | NA | NA |
1996-03-27 | Brazil | Ghana | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 6 | NA | NA | NA | NA |
1996-10-16 | Brazil | Lithuania | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA |
1996-11-13 | Brazil | Cameroon | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA |
1996-12-18 | Brazil | Bosnia-Herzegovina | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA |
1997-02-26 | Brazil | Poland | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA |
1997-04-02 | Brazil | Chile | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 4 | NA | NA | NA | NA |
1997-04-30 | Brazil | Mexico | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 4 | NA | NA | NA | NA |
1997-06-13 | Brazil | Costa Rica | NA | NA | NA | 5 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1997-06-16 | Brazil | Mexico | NA | NA | NA | 1 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1997-06-19 | Brazil | Colombia | NA | NA | NA | 2 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1997-06-22 | Brazil | Paraguay | NA | NA | NA | 2 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1997-06-26 | Brazil | Peru | NA | NA | NA | 7 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1997-09-10 | Brazil | Ecuador | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA |
1997-10-09 | Brazil | Morocco | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA |
1997-11-11 | Brazil | Wales | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 3 | NA | NA | NA | NA |
1997-12-16 | Brazil | Mexico | NA | NA | 1 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1997-12-19 | Brazil | Czech Republic | NA | NA | 2 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1997-12-21 | Brazil | Australia | NA | NA | 6 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1998-02-03 | Brazil | Jamaica | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 0 | NA | NA | NA |
1998-02-05 | Brazil | Guatemala | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 0 | NA | NA | NA |
1998-02-15 | Brazil | Jamaica | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA |
1998-04-29 | Brazil | Argentina | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | -1 | NA | NA | NA | NA |
1998-06-10 | Brazil | Scotland | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA | NA | NA |
1998-06-16 | Brazil | Morocco | NA | NA | NA | NA | NA | NA | NA | NA | 3 | NA | NA | NA | NA | NA | NA |
1998-06-23 | Brazil | Norway | NA | NA | NA | NA | NA | NA | NA | NA | -1 | NA | NA | NA | NA | NA | NA |
1998-06-27 | Brazil | Chile | NA | NA | NA | NA | NA | NA | NA | NA | 3 | NA | NA | NA | NA | NA | NA |
1998-07-03 | Brazil | Denmark | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA | NA | NA |
1998-07-07 | Brazil | Netherlands | NA | NA | NA | NA | NA | NA | NA | NA | 0 | NA | NA | NA | NA | NA | NA |
1998-09-23 | Brazil | Serbia | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 0 | NA | NA | NA | NA |
1998-10-14 | Brazil | Ecuador | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 4 | NA | NA | NA | NA |
1998-11-18 | Brazil | Russia | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 4 | NA | NA | NA | NA |
1999-06-05 | Brazil | Netherlands | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 0 | NA | NA | NA | NA |
1999-06-08 | Brazil | Netherlands | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA |
1999-06-16 | Brazil | Poland | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA |
1999-06-26 | Brazil | Latvia | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 3 | NA | NA | NA | NA |
1999-06-30 | Brazil | Venezuela | NA | NA | NA | 7 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1999-07-03 | Brazil | Mexico | NA | NA | NA | 1 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1999-07-06 | Brazil | Chile | NA | NA | NA | 1 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1999-07-11 | Brazil | Argentina | NA | NA | NA | 1 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1999-07-18 | Brazil | Uruguay | NA | NA | NA | 3 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1999-07-24 | Brazil | Germany | NA | NA | 4 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1999-07-28 | Brazil | USA | NA | NA | 1 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1999-08-01 | Brazil | Saudi Arabia | NA | NA | 6 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
1999-09-07 | Brazil | Argentina | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA |
2000-04-26 | Brazil | Ecuador | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA | NA |
2000-06-28 | Brazil | Uruguay | NA | NA | NA | NA | NA | NA | NA | NA | NA | 0 | NA | NA | NA | NA | NA |
2000-07-26 | Brazil | Argentina | NA | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA | NA |
2000-09-03 | Brazil | Bolivia | NA | NA | NA | NA | NA | NA | NA | NA | NA | 5 | NA | NA | NA | NA | NA |
2000-11-15 | Brazil | Colombia | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA | NA |
2001-04-25 | Brazil | Peru | NA | NA | NA | NA | NA | NA | NA | NA | NA | 0 | NA | NA | NA | NA | NA |
2001-05-31 | Brazil | Cameroon | NA | NA | 2 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
2001-07-12 | Brazil | Mexico | NA | NA | NA | -1 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
2001-07-15 | Brazil | Peru | NA | NA | NA | 2 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
2001-07-18 | Brazil | Paraguay | NA | NA | NA | 2 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
2001-07-23 | Brazil | Honduras | NA | NA | NA | -2 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
2001-08-09 | Brazil | Panama | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 5 | NA | NA | NA | NA |
2001-08-15 | Brazil | Paraguay | NA | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA | NA |
2001-10-07 | Brazil | Chile | NA | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA | NA |
2001-11-14 | Brazil | Venezuela | NA | NA | NA | NA | NA | NA | NA | NA | NA | 3 | NA | NA | NA | NA | NA |
2002-01-31 | Brazil | Bolivia | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 6 | NA | NA | NA | NA |
2002-03-07 | Brazil | Iceland | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 5 | NA | NA | NA | NA |
2002-03-27 | Brazil | Serbia | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA |
2002-06-03 | Brazil | Turkey | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA | NA | NA |
2002-06-08 | Brazil | China | NA | NA | NA | NA | NA | NA | NA | NA | 4 | NA | NA | NA | NA | NA | NA |
2002-06-17 | Brazil | Belgium | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA | NA | NA |
2002-06-26 | Brazil | Turkey | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA | NA | NA |
2002-08-21 | Brazil | Paraguay | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | -1 | NA | NA | NA | NA |
2003-06-19 | Brazil | Cameroon | NA | NA | -1 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
2003-06-21 | Brazil | USA | NA | NA | 1 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
2003-06-23 | Brazil | Turkey | NA | NA | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
2003-07-15 | Brazil | Honduras | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA |
2003-09-10 | Brazil | Ecuador | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA | NA |
2003-10-12 | Brazil | Jamaica | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA |
2003-11-19 | Brazil | Uruguay | NA | NA | NA | NA | NA | NA | NA | NA | NA | 0 | NA | NA | NA | NA | NA |
2004-06-02 | Brazil | Argentina | NA | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA | NA |
2004-07-08 | Brazil | Chile | NA | NA | NA | 1 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
2004-07-11 | Brazil | Costa Rica | NA | NA | NA | 3 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
2004-07-14 | Brazil | Paraguay | NA | NA | NA | -1 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
2004-09-05 | Brazil | Bolivia | NA | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA | NA |
2004-10-13 | Brazil | Colombia | NA | NA | NA | NA | NA | NA | NA | NA | NA | 0 | NA | NA | NA | NA | NA |
2005-03-27 | Brazil | Peru | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA | NA |
2005-04-27 | Brazil | Guatemala | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 3 | NA | NA | NA | NA |
2005-06-05 | Brazil | Paraguay | NA | NA | NA | NA | NA | NA | NA | NA | NA | 3 | NA | NA | NA | NA | NA |
2005-06-16 | Brazil | Greece | NA | NA | 3 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
2005-06-29 | Brazil | Argentina | NA | NA | 3 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
2005-09-04 | Brazil | Chile | NA | NA | NA | NA | NA | NA | NA | NA | NA | 5 | NA | NA | NA | NA | NA |
2005-10-12 | Brazil | Venezuela | NA | NA | NA | NA | NA | NA | NA | NA | NA | 3 | NA | NA | NA | NA | NA |
2006-06-04 | Brazil | New Zealand | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 4 | NA | NA | NA | NA |
2006-06-13 | Brazil | Croatia | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA | NA | NA |
2006-06-18 | Brazil | Australia | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA | NA | NA |
2006-06-27 | Brazil | Ghana | NA | NA | NA | NA | NA | NA | NA | NA | 3 | NA | NA | NA | NA | NA | NA |
2006-07-01 | Brazil | France | NA | NA | NA | NA | NA | NA | NA | NA | -1 | NA | NA | NA | NA | NA | NA |
2006-10-10 | Brazil | Ecuador | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA |
2007-03-24 | Brazil | Chile | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 4 | NA | NA | NA | NA |
2007-03-27 | Brazil | Ghana | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA |
2007-06-27 | Brazil | Mexico | NA | NA | NA | -2 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
2007-07-01 | Brazil | Chile | NA | NA | NA | 3 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
2007-07-04 | Brazil | Ecuador | NA | NA | NA | 1 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
2007-07-15 | Brazil | Argentina | NA | NA | NA | 3 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
2007-10-17 | Brazil | Ecuador | NA | NA | NA | NA | NA | NA | NA | NA | NA | 5 | NA | NA | NA | NA | NA |
2007-11-21 | Brazil | Uruguay | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA | NA |
2008-03-26 | Brazil | Sweden | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA |
2008-05-31 | Brazil | Canada | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA |
2008-06-06 | Brazil | Venezuela | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | -2 | NA | NA | NA | NA |
2008-09-10 | Brazil | Bolivia | NA | NA | NA | NA | NA | NA | NA | NA | NA | 0 | NA | NA | NA | NA | NA |
2008-10-15 | Brazil | Colombia | NA | NA | NA | NA | NA | NA | NA | NA | NA | 0 | NA | NA | NA | NA | NA |
2008-11-19 | Brazil | Portugal | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 4 | NA | NA | NA | NA |
2009-02-10 | Brazil | Italy | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA |
2009-06-10 | Brazil | Paraguay | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA | NA |
2009-06-15 | Brazil | Egypt | NA | NA | 1 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
2009-10-14 | Brazil | Venezuela | NA | NA | NA | NA | NA | NA | NA | NA | NA | 0 | NA | NA | NA | NA | NA |
2009-11-14 | Brazil | England | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA |
2010-06-15 | Brazil | Korea DPR | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA | NA | NA |
2010-06-20 | Brazil | Ivory Coast | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA | NA | NA |
2010-06-28 | Brazil | Chile | NA | NA | NA | NA | NA | NA | NA | NA | 3 | NA | NA | NA | NA | NA | NA |
2010-10-11 | Brazil | Ukraine | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA |
2011-03-27 | Brazil | Scotland | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA |
2011-06-04 | Brazil | Netherlands | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 0 | NA | NA | NA | NA |
2011-06-07 | Brazil | Romania | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA |
2011-07-03 | Brazil | Venezuela | NA | NA | NA | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
2011-07-09 | Brazil | Paraguay | NA | NA | NA | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
2011-07-13 | Brazil | Ecuador | NA | NA | NA | 2 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
2011-07-17 | Brazil | Paraguay | NA | NA | NA | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
2011-09-05 | Brazil | Ghana | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA |
2011-09-28 | Brazil | Argentina | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA |
2011-11-14 | Brazil | Egypt | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA |
2012-06-09 | Brazil | Argentina | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | -1 | NA | NA | NA | NA |
2012-09-07 | Brazil | South Africa | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA |
2012-09-10 | Brazil | China | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 8 | NA | NA | NA | NA |
2012-09-19 | Brazil | Argentina | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA |
2012-10-11 | Brazil | Iraq | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 6 | NA | NA | NA | NA |
2012-11-14 | Brazil | Colombia | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 0 | NA | NA | NA | NA |
2013-04-24 | Brazil | Chile | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 0 | NA | NA | NA | NA |
2013-06-02 | Brazil | England | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 0 | NA | NA | NA | NA |
2013-06-09 | Brazil | France | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 3 | NA | NA | NA | NA |
2013-06-15 | Brazil | Japan | NA | NA | 3 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
2013-06-19 | Brazil | Mexico | NA | NA | 2 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
2013-06-22 | Brazil | Italy | NA | NA | 2 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
2013-06-26 | Brazil | Uruguay | NA | NA | 1 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
2013-06-30 | Brazil | Spain | NA | NA | 3 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
2013-09-07 | Brazil | Australia | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 6 | NA | NA | NA | NA |
2013-09-10 | Brazil | Portugal | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA |
2013-10-15 | Brazil | Zambia | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA |
2013-11-19 | Brazil | Chile | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA |
2014-06-03 | Brazil | Panama | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 4 | NA | NA | NA | NA |
2014-06-06 | Brazil | Serbia | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA |
2014-06-12 | Brazil | Croatia | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA | NA | NA |
2014-06-17 | Brazil | Mexico | NA | NA | NA | NA | NA | NA | NA | NA | 0 | NA | NA | NA | NA | NA | NA |
2014-06-23 | Brazil | Cameroon | NA | NA | NA | NA | NA | NA | NA | NA | 3 | NA | NA | NA | NA | NA | NA |
2014-06-28 | Brazil | Chile | NA | NA | NA | NA | NA | NA | NA | NA | 0 | NA | NA | NA | NA | NA | NA |
2014-07-04 | Brazil | Colombia | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA | NA | NA |
2014-07-08 | Brazil | Germany | NA | NA | NA | NA | NA | NA | NA | NA | -6 | NA | NA | NA | NA | NA | NA |
2014-07-12 | Brazil | Netherlands | NA | NA | NA | NA | NA | NA | NA | NA | -3 | NA | NA | NA | NA | NA | NA |
2015-03-29 | Brazil | Chile | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA |
2015-06-07 | Brazil | Mexico | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA |
2015-06-10 | Brazil | Honduras | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA |
2015-06-14 | Brazil | Peru | NA | NA | NA | 1 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
2015-06-17 | Brazil | Colombia | NA | NA | NA | -1 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
2015-06-21 | Brazil | Venezuela | NA | NA | NA | 1 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
2015-06-27 | Brazil | Paraguay | NA | NA | NA | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
2015-10-13 | Brazil | Venezuela | NA | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA | NA |
2015-11-17 | Brazil | Peru | NA | NA | NA | NA | NA | NA | NA | NA | NA | 3 | NA | NA | NA | NA | NA |
2016-03-25 | Brazil | Uruguay | NA | NA | NA | NA | NA | NA | NA | NA | NA | 0 | NA | NA | NA | NA | NA |
2016-06-04 | Brazil | Ecuador | NA | NA | NA | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
2016-06-08 | Brazil | Haiti | NA | NA | NA | 6 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
2016-06-12 | Brazil | Peru | NA | NA | NA | -1 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
2016-09-06 | Brazil | Colombia | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA | NA |
2016-10-06 | Brazil | Bolivia | NA | NA | NA | NA | NA | NA | NA | NA | NA | 5 | NA | NA | NA | NA | NA |
2016-11-10 | Brazil | Argentina | NA | NA | NA | NA | NA | NA | NA | NA | NA | 3 | NA | NA | NA | NA | NA |
2017-01-26 | Brazil | Colombia | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1 | NA | NA | NA | NA |
2017-03-28 | Brazil | Paraguay | NA | NA | NA | NA | NA | NA | NA | NA | NA | 3 | NA | NA | NA | NA | NA |
2017-08-31 | Brazil | Ecuador | NA | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA | NA |
2017-10-10 | Brazil | Chile | NA | NA | NA | NA | NA | NA | NA | NA | NA | 3 | NA | NA | NA | NA | NA |
2018-06-17 | Brazil | Switzerland | NA | NA | NA | NA | NA | NA | NA | NA | 0 | NA | NA | NA | NA | NA | NA |
2018-06-22 | Brazil | Costa Rica | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA | NA | NA |
2018-07-02 | Brazil | Mexico | NA | NA | NA | NA | NA | NA | NA | NA | 2 | NA | NA | NA | NA | NA | NA |
2018-07-06 | Brazil | Belgium | NA | NA | NA | NA | NA | NA | NA | NA | -1 | NA | NA | NA | NA | NA | NA |
Tidy Data
date | home_team | away_team | home_score | away_score | tournament | city | country | neutral |
---|---|---|---|---|---|---|---|---|
1872-11-30 | Scotland | England | 0 | 0 | Friendly | Glasgow | Scotland | FALSE |
1873-03-08 | England | Scotland | 4 | 2 | Friendly | London | England | FALSE |
1874-03-07 | Scotland | England | 2 | 1 | Friendly | Glasgow | Scotland | FALSE |
1875-03-06 | England | Scotland | 2 | 2 | Friendly | London | England | FALSE |
1876-03-04 | Scotland | England | 3 | 0 | Friendly | Glasgow | Scotland | FALSE |
1876-03-25 | Scotland | Wales | 4 | 0 | Friendly | Glasgow | Scotland | FALSE |
1877-03-03 | England | Scotland | 1 | 3 | Friendly | London | England | FALSE |
1877-03-05 | Wales | Scotland | 0 | 2 | Friendly | Wrexham | Wales | FALSE |
1878-03-02 | Scotland | England | 7 | 2 | Friendly | Glasgow | Scotland | FALSE |
1878-03-23 | Scotland | Wales | 9 | 0 | Friendly | Glasgow | Scotland | FALSE |
Gather (tidyR)
It collapses multiple columns into two columns. When people say reshaping your data, it is the same of tidying using gather.
gather(data, key="my_key", value="values_of_each_col", ...="col_you_have_want_to_distribute")
# Gathering our data together again.
d_untidy %>% gather(key = "key", value = "value", 4:18)
# A tibble: 8,280 x 5
date home_team away_team key value
<date> <chr> <chr> <chr> <int>
1 1916-07-08 Brazil Chile Atlantic Cup NA
2 1916-07-12 Brazil Uruguay Atlantic Cup NA
3 1917-10-12 Brazil Chile Atlantic Cup NA
4 1919-05-11 Brazil Chile Atlantic Cup NA
5 1919-05-18 Brazil Argentina Atlantic Cup NA
6 1919-05-26 Brazil Uruguay Atlantic Cup NA
7 1919-05-29 Brazil Uruguay Atlantic Cup NA
8 1919-06-01 Brazil Argentina Atlantic Cup NA
9 1920-09-18 Brazil Uruguay Atlantic Cup NA
10 1921-10-12 Brazil Paraguay Atlantic Cup NA
# ... with 8,270 more rows
# Fixing the Na
d_untidy %>% gather(key = "key", value = "value", 4:18, na.rm = TRUE)
# A tibble: 552 x 5
date home_team away_team key value
* <date> <chr> <chr> <chr> <int>
1 1956-06-24 Brazil Uruguay Atlantic Cup 2
2 1960-07-12 Brazil Argentina Atlantic Cup 4
3 1972-06-28 Brazil Czechoslovakia Brazil Independence Cup 0
4 1972-07-02 Brazil Yugoslavia Brazil Independence Cup 3
5 1972-07-05 Brazil Scotland Brazil Independence Cup 1
6 1972-07-09 Brazil Portugal Brazil Independence Cup 1
7 1997-12-16 Brazil Mexico Confederations Cup 1
8 1997-12-19 Brazil Czech Republic Confederations Cup 2
9 1997-12-21 Brazil Australia Confederations Cup 6
10 1999-07-24 Brazil Germany Confederations Cup 4
# ... with 542 more rows
# Graphing
d_untidy %>%
select(1:3, contains("FIFA")) %>% gather(key = "key", value = "value", 4:5,
factor_key = TRUE, na.rm = TRUE) %>%
group_by(key, away_team) %>%
summarise(mean_brazil = mean(value)) %>%
ggplot(., aes(y = mean_brazil, x = away_team, group = away_team, fill = key)) +
geom_col(position = "dodge") +
coord_flip() +
geom_hline(yintercept = 0, alpha = 0.3, color = "blue") +
facet_wrap(~key) +
theme_minimal()
Separate
separate(data, col="one_you_want_to_separate", into="division", sep="regular_expression")
d_untidy %>%
separate(col = date, into = c("year", "month", "day"))
# A tibble: 552 x 20
year month day home_team away_team `Atlantic Cup` `Brazil Indepen~
<chr> <chr> <chr> <chr> <chr> <int> <int>
1 1916 07 08 Brazil Chile NA NA
2 1916 07 12 Brazil Uruguay NA NA
3 1917 10 12 Brazil Chile NA NA
4 1919 05 11 Brazil Chile NA NA
5 1919 05 18 Brazil Argentina NA NA
6 1919 05 26 Brazil Uruguay NA NA
7 1919 05 29 Brazil Uruguay NA NA
8 1919 06 01 Brazil Argentina NA NA
9 1920 09 18 Brazil Uruguay NA NA
10 1921 10 12 Brazil Paraguay NA NA
# ... with 542 more rows, and 13 more variables: `Confederations
# Cup` <int>, `Copa América` <int>, `Copa Bernardo O'Higgins` <int>,
# `Copa Oswaldo Cruz` <int>, `Copa Rio Branco` <int>, `Copa Roca` <int>,
# `FIFA World Cup` <int>, `FIFA World Cup qualification` <int>,
# Friendly <int>, `Gold Cup` <int>, Mundialito <int>, `Pan American
# Championship` <int>, `USA Cup` <int>
# Here, the default is to separate any sequence of non-alphanumeric values.
# Unite() does the opposite
Spread
The opposite of gather. It transforms your data from wide to long
# Tournaments Oppenents on the column
d %>% select(1:5, tournament) %>%
filter(home_team == "Brazil") %>%
mutate(diff = home_score - away_score) %>%
spread(key = tournament, value = diff) %>%
dplyr::select(-contains("score"))
# A tibble: 552 x 18
date home_team away_team `Atlantic Cup` `Brazil Indepen~
<date> <chr> <chr> <int> <int>
1 1916-07-08 Brazil Chile NA NA
2 1916-07-12 Brazil Uruguay NA NA
3 1917-10-12 Brazil Chile NA NA
4 1919-05-11 Brazil Chile NA NA
5 1919-05-18 Brazil Argentina NA NA
6 1919-05-26 Brazil Uruguay NA NA
7 1919-05-29 Brazil Uruguay NA NA
8 1919-06-01 Brazil Argentina NA NA
9 1920-09-18 Brazil Uruguay NA NA
10 1921-10-12 Brazil Paraguay NA NA
# ... with 542 more rows, and 13 more variables: `Confederations
# Cup` <int>, `Copa América` <int>, `Copa Bernardo O'Higgins` <int>,
# `Copa Oswaldo Cruz` <int>, `Copa Rio Branco` <int>, `Copa Roca` <int>,
# `FIFA World Cup` <int>, `FIFA World Cup qualification` <int>,
# Friendly <int>, `Gold Cup` <int>, Mundialito <int>, `Pan American
# Championship` <int>, `USA Cup` <int>
Extra functions and packages on data manipulation
case_when()
: replacement for if else.fct_relevel()
: to work with factors.ludibrate
package for working with dates.stringr
package to work with strings.
Quick example of lubridate
Cheat sheet here
library(lubridate)
ymd("2013-september, 20")
[1] "2013-09-20"
mdy("dec 30 1988")
[1] "1988-12-30"
# With mutate: Number of goals per year
d_time <- d %>%
mutate(year= year(date),
month= month(date)) %>%
mutate(interval = interval(date,today()),
time_span= as.period(interval),
in_months = interval / months(6)) %>% # per semester %>%
group_by(year) %>%
summarize(total_gols= sum(home_score + away_score)) %>%
ggplot(., aes(y=total_gols, x=year)) +
geom_point( color="pink") +
geom_smooth(method="loess",span=.1,colour="blue") +
labs(title="",
x="Years", y="Number of gols") +
theme_minimal()
Quick example stringR
Cheat sheet here
library(conflicted)
conflict_prefer("filter", "dplyr")
# everything starts with str
got <- read_csv("battles.csv")
got_red <- got %>%
mutate(attacker_king = str_to_lower(attacker_king), stark = str_detect(attacker_king,
"stark"), attacker_king = str_replace_all(attacker_king, "joffrey/tommen baratheon",
"cersey lannister"), attacker_no_endspace = str_trim(attacker_king)) %>%
select(attacker_king, stark, major_death) %>%
bind_cols(., as_data_frame(str_split(.$attacker_king, pattern = fixed(" "),
simplify = TRUE, n = 2)))
print(got_red)
# A tibble: 38 x 5
attacker_king stark major_death V1 V2
<chr> <lgl> <int> <chr> <chr>
1 cersey lannister FALSE 1 cersey lannister
2 cersey lannister FALSE 1 cersey lannister
3 cersey lannister FALSE 0 cersey lannister
4 robb stark TRUE 1 robb stark
5 robb stark TRUE 1 robb stark
6 robb stark TRUE 0 robb stark
7 cersey lannister FALSE 0 cersey lannister
8 balon/euron greyjoy FALSE 0 balon/euron greyjoy
9 balon/euron greyjoy FALSE 0 balon/euron greyjoy
10 balon/euron greyjoy FALSE 0 balon/euron greyjoy
# ... with 28 more rows
got_red %>%
na.omit() %>%
count(V2) %>%
ggplot(., aes(y = n, x = V2)) +
geom_col(fill = "tomato2", alpha = 0.8, color = "black") + theme_minimal() +
labs(title = "Major Deaths in the battle", y = "Total Number", x = "King Attacking")
Extra Material
Data Visualization on ggplot2
ggplot2 is a package from tidyverse. It shares the logic of the tidyverse using simple, intuitive functions and working well with pipes. It produces amazing graphs, and allows one to easily combine different features, layers, and information on the same graph.
See this link to get some examples of ggplot graphs
Two importants principles
- Graphics are distinct layers of elements
- Meaninful plots work mapping the aesthetics.
Elements
- Data
- Aesthetics : scales
- Geometries : visual elements
Basic workflow
GGplot work on layers. The grammar works pilling up different layers.
First layer: data
Second layer: Aesthetics.
What is your x?
what is your y?
Are you groupping on something
Here you add variations on the plot (color, fill, transparency, shape)
Third Layer: Geometries
geom_histogram()
: histogramgeom_bar()
: bar plotgeom_line()
: line plotgeom_point()
: scatter plotgeom_boxplot()
: box plotgeom_density()
: density plot
geom_dotplot()
: dot plotgeom_violin()
: violin plot
Other Layers: Customization
theme_bw()
: black and whitetheme_classic()
: old school no gridstheme_dark()
: dark themetheme_minimal()
: minimal themetheme_void()
: no themescale_*aes*_()
: To change the aesthetichslabs ()
: for labelsxlim()
orylim()
: for limits
Example: Electoral data in Brazil
geom_point
load("data-venturareplication.rda")
df <- df %>% mutate(treat = ifelse(rankvote == 1, 1, 0)) %>% dplyr::filter(vote_margin_share !=
1, vote_margin_share != -1)
ggplot(df, aes(x = vote_margin_share, y = vs_party, color = factor(treat, labels = c("Control",
"Treatment")))) + geom_point(shape = 21, alpha = 0.2) +
scale_color_brewer(NULL, type = "qual", palette = 6) +
guides(colour = guide_legend("Region", override.aes = list(alpha = 1))) +
geom_vline(aes(xintercept = 0), color = "grey", size = 1, linetype = "dashed") +
labs(x = "Margin of victory on local executive election", y = "Vote of the party on the next legislative election",
title = "RD effect for reverse cottail in Brazil")
Geom_smooth
ggplot(df, aes(x = vote_margin_share, y = vs_party, group = as.factor(treat),
fill = as.factor(treat))) + geom_smooth() + geom_vline(aes(xintercept = 0),
color = "grey", size = 1, linetype = "dashed") + labs(x = "Margin of victory on local executive election",
y = "Vote of the party on the next legislative election", title = "RD effect for reverse cottail in Brazil") +
theme_minimal()
Using facet_wrap
ggplot(df, aes(x = vote_margin_share, y = vs_party, group = as.factor(treat),
fill = as.factor(treat))) +
geom_smooth() +
geom_vline(aes(xintercept = 0), color = "grey", size = 1, linetype = "dashed") +
labs(x = "Margin of victory on local executive election", y = "Vote of the party on the next legislative election",
title = "RD effect for reverse cottail in Brazil") +
theme_bw() +
facet_wrap(~ANO_ELEICAO) +
theme(legend.position = "None")
Geom_errorbar
library(broom)
# Model
mod.1 <- lm(vs_party ~ treat + vote_margin_share + I(vote_margin_share^2) +
I(vote_margin_share^3) + I(treat * vote_margin_share) + I(treat * vote_margin_share^2) +
I(treat * vote_margin_share^3), data = df)
# summary(mod.1)
result <- tidy(mod.1) %>% mutate(upper = estimate + std.error * 1.96, lower = estimate -
std.error * 1.96, col = ifelse(estimate > 0, "Positive", "Negative"))
## Graph
ggplot(result, aes(y = estimate, x = term, fill = col)) +
geom_point(alpha = 1, shape = 21, size = 2, colour = "black") +
geom_errorbar(aes(ymax = upper, ymin = lower), colour = "black", fill = "black",
alpha = 0.5) +
ylab("Estimates") +
geom_hline(aes(yintercept = 0), color = "lightcoral") +
coord_flip() +
xlab("") +
ggthemes::theme_fivethirtyeight() +
theme(legend.position = "None")
geom_col
conflict_prefer("filter", "dplyr")
d_top10 <- df %>%
filter(treat == 1) %>%
group_by(ANO_ELEICAO, SIGLA_PARTIDO.x) %>%
summarise(mayor = n()) %>%
top_n(10)
ggplot(d_top10, aes(x = as.factor(ANO_ELEICAO), y = mayor)) +
geom_col(fill = "tomato2", alpha = 0.8, color = "black", width = 0.5) +
labs(title = "Number of Mayors elected by party and year", y = "", x = "") +
facet_wrap(~SIGLA_PARTIDO.x)
Multiple Layers
Take as granted the data I am showing below. It is a seats and votes model I run for the multilevel seminar using roll-call votes data in the United States House.
load("seats_votes.Rdata")
ggplot(us_data, aes(y = seatshare, x = v)) +
geom_point(aes(color = party), alpha = 0.5) +
geom_abline(color = "gray") +
ylab("Seat Share") + xlab("Vote Share") +
geom_line(data = cen, aes(y = cen$p, x = v), color = "black") +
scale_color_manual(values = c("red", "blue", "purple"), labels = c("Democrats",
"Republican", "Other"), name = "Party") + theme_minimal() +
annotate("label", label = paste("Majoritarian Bias equal to ", round(my.coef[1],
digits = 3)), y = 0.8, x = 0.2)