首页 > 解决方案 > 计算航班中目的地的平均延误

问题描述

我正在尝试解决一项任务:Compute the average delay by destination, then join on the airports data frame so you can show the spatial distribution of delays. Here’s an easy way to draw a map of the United States

所以我最初的方法是计算平均延迟。我是 R 新手,到目前为止我还没有在章节中阅读过循环,所以我认为我不应该使用循环。如果可能的话,我想不这样做。在任何其他编程语言中,我都会做类似的事情:

for i= 1 to flights.length
   for j = i to flights.length
         if flight[i].destination == flight[j].destination 
            avarage += (flight[i].arr_delay + flight[j].arr_delay)/i;

如果有帮助,这里是我要解决的问题的链接:https ://r4ds.had.co.nz/relational-data.html#exercises-30

我有点卡住了。到目前为止,这就是我在 R 中所拥有的:

library(tidyverse)
library(maps)
library(nycflights13)

fl <- flights %>% 
   filter(!is.na(arr_delay)) %>% 
     group_by(arr_delay)

view(mutate(fl, "avgDelay" = mean(arr_delay)))

添加的新列,我称之为“avgDelay”,只显示与 arr_delay 相同的值,所以我肯定做错了。

非常感谢任何帮助

标签: r

解决方案


在没有可重复数据的情况下,并且由于您的数据看起来像什么以及您的目标是什么缺乏清晰性,这里是您可能的意思的狂野镜头。您帖子的标题提到“目的地的平均延迟”。这表明您至少有两个变量,一个我们可以调用delay,一个我们将调用destination。这是一个带有一些采样数据的数据框,用于说明:

数据

set.seed(122)
delay <- sample(0:200, 10)
destination <- sample(LETTERS[1:3], 10, replace = T)
df <- data.frame(delay, destination)
df
   delay destination
1     57           C
2    157           B
3     81           C
4    174           B
5    185           A
6      8           C
7    102           A
8    173           A
9    106           A
10    87           C

解决方案

要按目的地计算平均延迟,您可以使用tapply以下函数mean

tapply(df$delay, df$destination, mean)
     A      B      C 
141.50 165.50  58.25 

这是否接近你所追求的?


推荐阅读