Import your data

# Load package
library(readxl)

# Excel file
Roundabouts <- read_excel("Raw data Roundabout copy.xlsx")

Roundabouts
## # A tibble: 27,887 × 18
##    name    address town_city county_area state_region country    lat  long type 
##    <chr>   <chr>   <chr>     <chr>       <chr>        <chr>    <dbl> <dbl> <chr>
##  1 Arapah… Boulde… Boulder   Boulder Co. CO           United… -105.   40.0 Traf…
##  2 Arapah… Boulde… Boulder   Boulder Co. CO           United… -105.   40.0 Traf…
##  3 10th A… Belmar… Belmar    Monmouth C… NJ           United…  -74.0  40.2 Traf…
##  4 10th A… Belmar… Belmar    Monmouth C… NJ           United…  -74.0  40.2 Traf…
##  5 Bagley… Seattl… Seattle   King Co.    WA           United… -122.   47.7 Traf…
##  6 8th Av… Seattl… Seattle   King Co.    WA           United… -122.   47.7 Traf…
##  7 8th Av… Seattl… Seattle   King Co.    WA           United… -122.   47.7 Traf…
##  8 8th Av… Seattl… Seattle   King Co.    WA           United… -122.   47.7 Traf…
##  9 Kendal… Madiso… Madison   Dane Co.    WI           United…  -89.4  43.1 Traf…
## 10 Bagley… Seattl… Seattle   King Co.    WA           United… -122.   47.7 Traf…
## # ℹ 27,877 more rows
## # ℹ 9 more variables: status <chr>, year_completed <dbl>, approaches <dbl>,
## #   driveways <dbl>, lane_type <chr>, functional_class <chr>,
## #   control_type <chr>, other_control_type <chr>, previous_control_type <chr>

Chapter 15

Create a factor

Roundabouts %>%
    mutate(lane_type = as.factor(lane_type)) %>%
    distinct(lane_type)
## # A tibble: 9 × 1
##   lane_type                                         
##   <fct>                                             
## 1 Single-Lane                                       
## 2 Unknown                                           
## 3 Single-lane w/ Traversable Central Island         
## 4 Multilane (2 Lane, unspecified)                   
## 5 Multilane (3+ Lane)                               
## 6 Ring junction (3+ mini-roundabouts in ring)       
## 7 Multilane (2+ lanes) w/ Traversable Central Island
## 8 Multilane (2 Lane, 2x1 max)                       
## 9 Multilane (2 Lane, 2x2 max)

Modify factor order

Make two bar charts here - one before ordering another after

Roundabouts %>%
    ggplot(aes(x = lane_type)) +
    geom_bar()

Roundabouts %>%
    ggplot(aes(x = fct_infreq(lane_type))) +
    geom_bar() +
    
    labs(x = "Lane Type", y = "Number of Roundabouts")

Modify factor levels

Show examples of three functions:

  • fct_recode
Roundabouts %>% distinct(lane_type)
## # A tibble: 9 × 1
##   lane_type                                         
##   <chr>                                             
## 1 Single-Lane                                       
## 2 Unknown                                           
## 3 Single-lane w/ Traversable Central Island         
## 4 Multilane (2 Lane, unspecified)                   
## 5 Multilane (3+ Lane)                               
## 6 Ring junction (3+ mini-roundabouts in ring)       
## 7 Multilane (2+ lanes) w/ Traversable Central Island
## 8 Multilane (2 Lane, 2x1 max)                       
## 9 Multilane (2 Lane, 2x2 max)
Roundabouts %>%
    
    mutate(lane_type_rev = fct_recode(lane_type, "Single Lane" = "Single-Lane")) %>%
    select(lane_type, lane_type_rev) %>%
    filter(lane_type == "Single-Lane")
## # A tibble: 18,288 × 2
##    lane_type   lane_type_rev
##    <chr>       <fct>        
##  1 Single-Lane Single Lane  
##  2 Single-Lane Single Lane  
##  3 Single-Lane Single Lane  
##  4 Single-Lane Single Lane  
##  5 Single-Lane Single Lane  
##  6 Single-Lane Single Lane  
##  7 Single-Lane Single Lane  
##  8 Single-Lane Single Lane  
##  9 Single-Lane Single Lane  
## 10 Single-Lane Single Lane  
## # ℹ 18,278 more rows
  • fct_collapse
Roundabouts %>%
    
    mutate(lane_type_col = fct_collapse(lane_type, 
                                        "Multilane" = c("Multilane (2 Lane, unspecified)",
                                                        "Multilane (3+ Lane)",
                                                        "Multilane (2 Lane, 2x2 max)",
                                                        "Multilane (2 Lane, 2x1 max)",
                                                        "Multilane (2+ lanes) w/ Traversable Central Island"))) %>%
    select(lane_type, lane_type_col) %>%
    filter(lane_type != "Single-Lane")
## # A tibble: 9,599 × 2
##    lane_type lane_type_col
##    <chr>     <fct>        
##  1 Unknown   Unknown      
##  2 Unknown   Unknown      
##  3 Unknown   Unknown      
##  4 Unknown   Unknown      
##  5 Unknown   Unknown      
##  6 Unknown   Unknown      
##  7 Unknown   Unknown      
##  8 Unknown   Unknown      
##  9 Unknown   Unknown      
## 10 Unknown   Unknown      
## # ℹ 9,589 more rows
  • fct_lump
Roundabouts %>% count(lane_type)
## # A tibble: 9 × 2
##   lane_type                                              n
##   <chr>                                              <int>
## 1 Multilane (2 Lane, 2x1 max)                          333
## 2 Multilane (2 Lane, 2x2 max)                          428
## 3 Multilane (2 Lane, unspecified)                     6122
## 4 Multilane (2+ lanes) w/ Traversable Central Island     8
## 5 Multilane (3+ Lane)                                  672
## 6 Ring junction (3+ mini-roundabouts in ring)            4
## 7 Single-Lane                                        18288
## 8 Single-lane w/ Traversable Central Island            763
## 9 Unknown                                             1269
Roundabouts %>% 
    mutate(lane_type_lump = fct_lump(lane_type)) %>% 
    distinct(lane_type_lump)
## # A tibble: 2 × 1
##   lane_type_lump
##   <fct>         
## 1 Single-Lane   
## 2 Other

Chapter 16

No need to do anything here.