GaB
GaB

Reputation: 1132

how to plot a map only with lat, long without group in R

I am having issues with plotting a UK map. Indeed, I have issues plotting because maybe I do not have a group as a variable. This is the type of data I have.

lft_j  <- structure(list(journeydate = c("18/03/2020", "18/03/2020", "18/03/2020", 
"18/03/2020", "18/03/2020", "18/03/2020"), sex = c("Female", 
"Female", "Female", "Female", "Female", "Female"), ageband = c("0-18 years", 
"0-18 years", "0-18 years", "0-18 years", "0-18 years", "0-18 years"
), ccgcode = c("E38000001", "E38000002", "E38000004", "E38000005", 
"E38000006", "E38000007"), ccgname = c("NHS Airedale, Wharfedale and Craven CCG", 
"NHS Ashford CCG", "NHS Barking and Dagenham CCG", "NHS Barnet CCG", 
"NHS Barnsley CCG", "NHS Basildon and Brentwood CCG"), Total = c(17, 
27, 27, 43, 30, 42), objectid = c(NA, NA, 1, NA, 2, 3), ccg20cd = c(NA, 
NA, "E38000004", NA, "E38000006", "E38000007"), bng_e = c(NA, 
NA, 547758, NA, 429979, 564014), bng_n = c(NA, NA, 185109, NA, 
403330, 194421), long = c(NA, NA, 0.129493, NA, -1.54925001, 
0.36806801), lat = c(NA, NA, 51.54552841, NA, 53.5257988, 51.62469864
), st_lengthshape = c(NA, NA, 40665.2789272553, NA, 125518.601736474, 
120224.102808673), st_areashape = c(NA, NA, 36091041.104372, 
NA, 329052050.351673, 263142523.0488)), row.names = c(NA, -6L
), class = c("tbl_df", "tbl", "data.frame"))

library(leaflet)

map <- 
  leaflet(lft_j) %>%
  addTiles() %>%
  addMarkers(lng = long, lat = lat, clusterOptions = markerClusterOptions())

map 

This is an error:

Error in resolveFormula(lng, data) : object 'long' not found

This is done in R, with leaflet.

Upvotes: 0

Views: 94

Answers (1)

MDEWITT
MDEWITT

Reputation: 2368

You just need to add tildas (~) to lat and long in order for them to be recognized:

lft_j  <- structure(list(journeydate = c("18/03/2020", "18/03/2020", "18/03/2020", 
"18/03/2020", "18/03/2020", "18/03/2020"), sex = c("Female", 
"Female", "Female", "Female", "Female", "Female"), ageband = c("0-18 years", 
"0-18 years", "0-18 years", "0-18 years", "0-18 years", "0-18 years"
), ccgcode = c("E38000001", "E38000002", "E38000004", "E38000005", 
"E38000006", "E38000007"), ccgname = c("NHS Airedale, Wharfedale and Craven CCG", 
"NHS Ashford CCG", "NHS Barking and Dagenham CCG", "NHS Barnet CCG", 
"NHS Barnsley CCG", "NHS Basildon and Brentwood CCG"), Total = c(17, 
27, 27, 43, 30, 42), objectid = c(NA, NA, 1, NA, 2, 3), ccg20cd = c(NA, 
NA, "E38000004", NA, "E38000006", "E38000007"), bng_e = c(NA, 
NA, 547758, NA, 429979, 564014), bng_n = c(NA, NA, 185109, NA, 
403330, 194421), long = c(NA, NA, 0.129493, NA, -1.54925001, 
0.36806801), lat = c(NA, NA, 51.54552841, NA, 53.5257988, 51.62469864
), st_lengthshape = c(NA, NA, 40665.2789272553, NA, 125518.601736474, 
120224.102808673), st_areashape = c(NA, NA, 36091041.104372, 
NA, 329052050.351673, 263142523.0488)), row.names = c(NA, -6L
), class = c("tbl_df", "tbl", "data.frame"))

library(leaflet)

map <- 
  leaflet(lft_j) %>%
  addTiles() %>%
  addMarkers(lng = ~long, lat = ~lat, clusterOptions = markerClusterOptions())

map 

To get the figure you desire

leafletmap

Upvotes: 1

Related Questions