如何将通过R获取的航班数据转换为DataFrame或表格以进行分析?
把Aviationstack API数据转换为R DataFrame的解决方案
你从API获取的flight_data是包含元数据和航班数据列表的嵌套结构,核心航班信息存储在flight_data$data元素中。以下是几种实用的转换方式:
方法1:直接扁平化转换(适配简单结构)
调用fromJSON时添加flatten = TRUE参数,自动将嵌套JSON结构展开为扁平列,再直接转为DataFrame:
library(httr) library(jsonlite) # 重新获取数据并同步扁平化处理 nflight = GET('http://api.aviationstack.com/v1/flights?access_key=709b8cba703074de66ca50f1c5c69ce6') flight_data = fromJSON(rawToChar(nflight$content), flatten = TRUE) # 提取航班数据并转为DataFrame flight_df = as.data.frame(flight_data$data) # 查看前几行数据验证结果 head(flight_df)
方法2:手动展开嵌套结构(适配复杂嵌套)
如果数据包含多层嵌套子对象(比如departure、arrival这类多字段子结构),可以用tidyr的unnest_wider逐步展开:
library(httr) library(jsonlite) library(tidyr) library(dplyr) # 基于已获取的flight_data处理 flight_data = fromJSON(rawToChar(nflight$content)) # 转换为tibble并展开嵌套字段 flight_df = flight_data$data %>% as_tibble() %>% # 展开departure下的所有字段,用下划线拼接前缀区分 unnest_wider(departure, names_sep = "_") %>% # 展开arrival下的所有字段 unnest_wider(arrival, names_sep = "_") # 检查最终数据结构 str(flight_df)
关键提示
- 用
str(flight_data)查看原始返回结构,确认核心数据的位置 - 若遇到数组类列表列,可使用
unnest_longer处理(比如多状态的航班记录) - 转换完成后,用
summary(flight_df)查看数据统计信息,为后续分析做准备
内容的提问来源于stack exchange,提问作者KMazeltov
相关产品推荐
相关产品推荐

