Cleaning Data
# Read CSV
concert_archives <- read_csv("sonia_rose11_Concert_Archives_Export.csv", show_col_types=FALSE)
# Filter concert data
concerts <- concert_archives %>%
select(Date=`Start Date`,
`Concert Name` = `Concert Name`,
Venue = Venue,
Location = Location)
# Mutate dates and separate locations
concerts <- concerts %>%
mutate(Date=as.Date(Date, format="%m/%d/%Y")) %>%
mutate(Year=year(Date)) %>%
mutate(Location_tot = Location) %>%
separate(Location_tot, into = c("City", "State", "Country"), sep = ",", fill ="right")
Geocoding Locations
# Geocoding the locations of each concert
concerts <- concerts %>%
geocode(address=Location, method ="osm", lat=lat, long=long)
## Passing 78 addresses to the Nominatim single address geocoder
## Query completed in: 78.5 seconds
Converting into a spatial object and counting total concerts all
time
# Convert into spatial object
sf_concerts <- st_as_sf(concerts, coords = c("long","lat"), crs=4326) %>%
mutate(long=st_coordinates(.)[,1],
lat=st_coordinates(.)[,2])
# Count number of concerts by location
concerts_num <- sf_concerts %>%
group_by(Venue, Location, City, State, Country,geometry) %>%
summarize(n_concerts = n(), .groups="drop")
# Quick view of all concerts by location and frequency
mapview(concerts_num, zcol ="n_concerts", cex="n_concerts", label="Venue")
Yearly Concerts
# New data frames by years
concerts_2023 <- sf_concerts %>%
filter(Year == "23")
concerts_2024 <- sf_concerts %>%
filter(Year=="24")
concerts_2025 <- sf_concerts %>%
filter(Year=="25")
# Counting concerts by locations for each year
# 2023
concert_count_2023 <- concerts_2023 %>%
group_by(Venue, Location, City, State, Country,geometry) %>%
summarize(n_concerts = n(), .groups="drop")
mapview(concert_count_2023, zcol ="n_concerts", cex="n_concerts", label="Venue")
# 2024
concert_count_2024 <- concerts_2024 %>%
group_by(Venue, Location, City, State, Country,geometry) %>%
summarize(n_concerts = n(), .groups="drop")
mapview(concert_count_2024, zcol ="n_concerts", cex="n_concerts", label="Venue")
# 2025
concert_count_2025 <- concerts_2025 %>%
group_by(Venue, Location, City, State, Country,geometry) %>%
summarize(n_concerts = n(), .groups="drop")
mapview(concert_count_2025, zcol ="n_concerts", cex="n_concerts", label="Venue")
Leaflet Maps: 2023
# Map for 2023 Concerts
map_2023 <- leaflet(concerts_2023)
map_2023 <- addTiles(map_2023)
map_2023 <- addCircleMarkers(map_2023, color="black",
clusterOptions=markerClusterOptions(),
popup=~paste("<b>Venue:<b>", Venue, "<br>",
"<b>Location:<b>", Location, "<br>",
"<b>Date:<b>", Date))
map_2023
2024
# Map for 2024 Concerts
map_2024 <- leaflet(concerts_2024)
map_2024 <- addTiles(map_2024)
map_2024 <- addCircleMarkers(map_2024, color="black",
clusterOptions=markerClusterOptions(),
popup=~paste("<b>Venue:<b>", Venue, "<br>",
"<b>Location:<b>", Location, "<br>",
"<b>Date:<b>", Date))
map_2024
2025
# Map for 2025 Concerts
map_2025 <- leaflet(concerts_2025)
map_2025 <- addTiles(map_2025)
map_2025 <- addCircleMarkers(map_2025, color="black",
clusterOptions=markerClusterOptions(),
popup=~paste("<b>Venue:<b>", Venue, "<br>",
"<b>Location:<b>", Location, "<br>",
"<b>Date:<b>", Date))
map_2025
All Three Years and All Together
# Map of All Concerts 2023-2025
map_tot <- leaflet(sf_concerts)
map_tot <- addTiles(map_tot)
map_tot <- addCircleMarkers(map_tot, color="black",
clusterOptions=markerClusterOptions(),
popup=~paste("<b>Venue:<b>", Venue, "<br>",
"<b>Location:<b>", Location, "<br>",
"<b>Date:<b>", Date))
map_tot
leafsync::sync(map_2023, map_2024, map_2025, map_tot)