Мне было интересно, есть ли способ сравнить расстояния до аэропорта (коды IATA). Есть несколько скриптов, но они не используют R. Поэтому я попробовал это с помощью API:
Пример данных:
library(curl) # for curl post
departure <- c("DRS","TXL","STR","DUS","LEJ","FKB","LNZ")
arrival <- c("FKB","HER","BOJ","FUE","PMI","AYT","FUE")
flyID <- c(1,2,3,4,5,6,7)
df <- data.frame(departure,arrival,flyID)
departure arrival flyID
1 DRS FKB 1
2 TXL HER 2
3 STR BOJ 3
4 DUS FUE 4
5 LEJ PMI 5
6 FKB AYT 6
7 LNZ FUE 7
api<- curl_fetch_memory("https://airport.api.aero/airport/distance/DRS/FUE?user_key=d805e84363494ca03b9b52d5a505c4d1")
cat(rawToChar(api$content))
callback({"processingDurationMillis":0,"authorisedAPI":true,"success":true,"airline":null,"errorMessage":null,"distance":"3,416.1","units":"km"})
где DRS соответствует аэропорту вылета и FUE прибытия.
Поэтому я решил перебрать df
и вставить в URL. Однако это кажется каким-то сложным для R - новичка.
df$distance<- list(length = nrow(df))
for (i in 1:nrow(df)){
url <- paste0("https://airport.api.aero/airport/distance/", i, "FUE ?user_key=d805e84363494ca03b9b52d5a505c4d1")
myData[[i]] <- read.table(url, header=T,sep="|")
}
Желаемый результат:
departure arrival flyID distance
1 DRS FKB 1 1000
2 TXL HER 2 499
3 STR BOJ 3 300
4 DUS FUE 4 200
5 LEJ PMI 5 586
6 FKB AYT 6 10292
7 LNZ FUE 7 3939
read.table
, и у вас возникает вопрос, как сохранить их в data.frame? Или вы получаете только геокоординаты аэропортов и ваш вопрос о том, как преобразовать их в расстояния? Или ваш вопрос касается привязки кодов ИАТА к геокоординатам? - person Qaswed   schedule 01.06.2016