如何用for循环筛选向量值,统计nycflights13各航司各目的地提前到港航班数
实现方案
前置依赖
首先加载所需包并完成你已有的预处理逻辑:
library(nycflights13) library(dplyr) # 你已写的预处理代码 AL <- unique(flights$carrier) LOC <- unique(flights$dest) EARLYBIRD <- filter(flights, arr_delay < 0)
for 循环实现逻辑
你需要先初始化一个空结果数据框,再通过两层循环遍历所有目的地、航司组合,逐次计算后追加结果:
# 初始化空结果表,指定列类型避免拼接时报错 result <- data.frame( dest = character(), carrier = character(), count = integer(), stringsAsFactors = FALSE ) # 第一层循环:遍历所有目的地 for (current_dest in LOC) { # 筛选当前目的地的提前到港航班 dest_filtered <- filter(EARLYBIRD, dest == current_dest) # 第二层循环:遍历所有航司 for (current_carrier in AL) { # 筛选当前航司的航班 carrier_filtered <- filter(dest_filtered, carrier == current_carrier) # 构造当前统计行 current_row <- data.frame( dest = current_dest, carrier = current_carrier, count = nrow(carrier_filtered), stringsAsFactors = FALSE ) # 追加到结果表 result <- rbind(result, current_row) } } # 可选:过滤掉没有符合条件航班的组合 result <- filter(result, count > 0)
更高效的推荐写法(无需循环)
实际R语言处理这类分组统计问题,直接用dplyr的分组汇总语法效率更高、代码更简洁:
result <- EARLYBIRD %>% group_by(dest, carrier) %>% summarise(count = n(), .groups = "drop")
运行得到的result表和你要的for循环输出结构完全一致。
内容的提问来源于stack exchange,提问作者Ricer
相关产品推荐
相关产品推荐

