(Acest articol a fost publicat pentru prima dată pe Rstats – cuantificatși cu amabilitate a contribuit la R-bloggeri). (Puteți raporta problema legată de conținutul acestei pagini aici)
Doriți să vă distribuiți conținutul pe R-bloggeri? dați clic aici dacă aveți un blog, sau aici dacă nu aveți.
Am văzut recent pe YouTube un videoclip distractiv în care unii alergători au încercat să facă două parkrun-uri într-o zi. Nu vreau să spun că alergau de două ori același parcurs de parkrun, adică au alergat un parkrun la un curs și apoi au condus la un alt curs și au alergat și pe acela. Provocarea a fost să faci ambele parkrun-uri şi bate ultima persoana (mercatorul de coada) pe al doilea curs pana la linia de sosire.
Alertă spoiler: dacă vrei suspansul, urmărește videoclipul și apoi revino aici.
În videoclip, ei se confruntă mai întâi cu Warwick Racecourse parkrun. Un șofer așteaptă și ei zoom la Leamington Spa parkrun și rulează apoi. Conducerea durează aproximativ 12 minute. Ei sunt ajutați de a fi alergători extrem de buni – de fapt, unul dintre ei (Harry) termină primul la Warwick – iar Leamington se întâmplă să înceapă cu câteva minute întârziere. Chiar și așa, trec în vânt pe lângă umblatorul de coadă pentru a finaliza provocarea.
L-am văzut pe Ryan care co-găzduiește canalul Raley Adventures YouTube la un eveniment recent de alergare și a menționat că lucrul tare ar fi să nu te bazezi pe Haley (co-gazda lui) pentru a conduce între parcuri, ci să alerge între ele. Asta m-a pus pe ganduri: unde sunt cele mai apropiate perechi de parcuri și care dintre acestea se află în Midlands, unde are sediul Raley Adventures?
A fost destul de simplu, având în vedere o listă de coordonate ale tuturor parkrun-urilor din Marea Britanie, să descoperiți acest lucru în R. Faceți clic aici pentru răspuns sau citiți mai departe pentru cod.
Codul
Folosind lista, putem găsi distanța dintre toate perechile de coordonate parkrun și apoi setăm o limită de 3 km pentru a defini o pereche rulabilă. Cele 12 minute de mers cu mașina de la Warwick la Leamington echivalează cu 3 km în alergare pentru tipi rapizi precum Ryan și Harry.
library(leaflet)
library(htmlwidgets)
## Functions ----
# function to get the distance between two rows of the dataframe
haversine_distance <- function(lat1, lon1, lat2, lon2) {
R <- 6371 # Earth radius in km
dlat <- (lat2 - lat1) * pi / 180
dlon <- (lon2 - lon1) * pi / 180
a <- sin(dlat / 2) * sin(dlat / 2) +
cos(lat1 * pi / 180) * cos(lat2 * pi / 180
) * sin(dlon / 2) * sin(dlon / 2)
c <- 2 * atan2(sqrt(a), sqrt(1 - a))
d <- R * c
return(d)
}
## Script ----
# load in the csv in Data it has no headers
df <- read.csv("Data/uk-parkruns.csv", header = FALSE)
# label columns
colnames(df) <- c("Event", "Place", "Lat", "Lon")
# drop all rows that have the word "juniors" in Event
df <- df(!grepl("juniors", df$Event, ignore.case = TRUE), )
# now find the nearest neighbors for each parkrun using haversine formula
df$Nearest_Neighbor <- NA
df$Distance_to_Nearest_Neighbor_km <- NA
for (i in 1:nrow(df)) {
row <- df(i, )
min_distance <- Inf
nearest_event <- NA
for (j in 1:nrow(df)) {
if (i != j) {
neighbor_row <- df(j, )
dist <- haversine_distance(row$Lat, row$Lon,
neighbor_row$Lat, neighbor_row$Lon)
if (dist < min_distance) {
min_distance <- dist
nearest_event <- neighbor_row$Event
}
}
}
df$Nearest_Neighbor(i) <- nearest_event
df$Distance_to_Nearest_Neighbor_km(i) <- round(min_distance, 2)
}
# sort by distance to nearest neighbor
df <- df(order(df$Distance_to_Nearest_Neighbor_km), )
write.csv(df, "Output/Data/uk-parkruns-with-nearest-neighbors.csv",
row.names = FALSE)
# make a leaflet map to visualize the parkruns and their nearest neighbors
map <- leaflet(df) |>
addTiles() |>
addCircleMarkers(~Lon, ~Lat,
label = ~paste0(Event,
"-- Nearest Neighbour: ",
Nearest_Neighbor,
"-- Distance (km): ",
Distance_to_Nearest_Neighbor_km),
radius = 4,
color=~ifelse(df$Distance_to_Nearest_Neighbor_km < 3 , "red", "blue"),
stroke = FALSE,
fillOpacity = 0.7)
# save the map as an html file
saveWidget(map, "Output/Plots/uk-parkruns-nearest-neighbors-map.html", selfcontained = TRUE)
Cele mai apropiate parcuri
În mod uimitor, au existat 115 perechi de parcuri care se pot rula (există avertismente la acest lucru, vezi mai jos).
Iată primele 20 sau cam asa ceva din tabel pentru a vedea cele mai apropiate 10 perechi.
| Eveniment | Loc | Lat | Lon | Nearest_Neighbor | Distanța_la_cel mai apropiat_vecin_km |
| Leazes | Parcul Leazes | 54,977078 | -1,625633 | Town Moor | 1,38 |
| Town Moor | Exhibition Park, Newcastle | 54,988451 | -1,617143 | Leazes | 1,38 |
| Bucla Cuningar | Bucla Cuningar | 55,84069 | -4.201428 | Tollcross | 1,57 |
| Tollcross | Tollcross | 55,847494 | -4,179461 | Bucla Cuningar | 1,57 |
| Jesmond Dene | Jesmond Dene | 54,99188 | -1,592839 | Town Moor | 1.6 |
| Alexandra | Parcul Alexandra | 53,450142 | -2,248827 | Manchester de Sud | 1,66 |
| Manchester de Sud | Parcul Platt Fields | 53,446072 | -2,224689 | Alexandra | 1,66 |
| Brighton & Hove | Hove Park, Brighton | 50,84214 | -0,172498 | Preston Park | 1,68 |
| Preston Park | Preston Park | 50,841557 | -0,148616 | Brighton & Hove | 1,68 |
| Old Deer Park | Old Deer Park, Richmond | 51,464417 | -0,306973 | Parcul Richmond | 1,69 |
| Parcul Richmond | Parcul Richmond, Richmond upon Thames | 51,451962 | -0,292886 | Old Deer Park | 1,69 |
| Parcul Bătrânului | Parcul Bătrânului | 55,863235 | -4,32197 | Victoria | 1,71 |
| Victoria | Parcul Victoria | 55,877504 | -4,332347 | Parcul Bătrânului | 1,71 |
| Catford | Parcul Mountsfield | 51,44824 | -0,00863 | Câmpuri deluroase | 1,74 |
| Câmpuri deluroase | Câmpuri deluroase | 51,460143 | -0,025019 | Catford | 1,74 |
| Arde | Varley Park, Stockport SK4 3EA | 53,407152 | -2,209185 | Fletcher Moss | 1,77 |
| Castelul Colchester | Parcul Castelului | 51,89167 | 0,902724 | Highwoods | 1,77 |
| Fletcher Moss | Parcul Fletcher Moss | 53,40999 | -2,23551 | Arde | 1,77 |
| Highwoods | Highwoods Country Park | 51,904682 | 0,917561 | Castelul Colchester | 1,77 |
| Dulwich | Parcul Dulwich, Dulwich | 51,443869 | -0,079206 | Peckham Rye | 1,82 |
| Peckham Rye | Parcul Peckham Rye | 51,455486 | -0,060688 | Dulwich | 1,82 |
Newcastle-upon-Tyne are trei parcuri care pot fi alergate. Leazes to Town Moor (și invers) este la 1,38 km, iar Jesmond Deane este la doar 1,6 km de Town Moor.
Să aruncăm o privire pe hartă pentru a vedea ce este în apropiere.

Harta se deschide într-o vizualizare micșorată, dezvăluind un parc în Insulele Falkland, care este la 12333 km de… Land’s End în Anglia!
M-am chinuit să încorporez harta aici, așa că iată o captură de ecran cu mine privind câteva perechi de candidați. Punctele roșii sunt parcuri cu un vecin care se află la mai puțin de 3 km distanță, toate celelalte sunt puncte albastre.
Și iată o captură de ecran a perechilor din Midlands pentru o potențială provocare de alergare.


Perechi potențiale
- Wolverhampton – East Park = 2,84 km
- Abbey Park – Leicester Victoria = 2,79 km
- Linford Wood – Milton Keynes = 2,71 km
- Cheltenham – Teren de joc Regele George V = 2,44 km
- Gloucester North – Gloucester City = 2,32 km
- Northampton – Universitatea din Northampton = 2,02 km
Avertismente
Am exclus aici evenimentele de juniori, dar evident că ambele parcuri trebuie să fie actuale, adică să aibă loc în aceeași zi. Poate că unele dintre site-uri au fost întrerupte sau ar putea fi anulate în ziua respectivă.
Cea mai mare problemă aici este că coordonatele sunt adesea spre mijlocul parcului. Dacă o pereche poate fi alergată cu adevărat, va depinde de locul în care este sfârșitul primului parkrun față de începutul celui de-al doilea. Nu am putut găsi o grămadă de fișiere gpx sau ceva care să mă ajute să fac asta.
Am stabilit o distanță de 3 km pentru a defini o pereche care poate fi alergată. Acest lucru ar putea fi prea generos. În videoclip, ei rulează pe Leamington pe locul al doilea pentru că are reputația de a începe cu câteva minute întârziere. Este, de asemenea, un curs mai provocator, ceea ce înseamnă că este mai probabil ca mersul cu coadă să fie mai lent. Aceste lucruri înclină balanța. De asemenea, s-au odihnit în timpul conducerii, lucru care ar trebui să fie luat în considerare dacă provocarea ar fi să alerge între o pereche. Pe de altă parte, mergetorul de coadă ar putea dura o oră pentru a face o alergare în parc, caz în care, perechile care sunt mai mari de 3 km ar fi realizabile.
Concluzie
Cu siguranță cred că este posibil să alergi între o pereche de parcuri. Există o mulțime de opțiuni și mi-ar plăcea să-i văd încercând să o facă!
—
Titlul postării este preluat din „Close To Me” de The Cure.
