专栏首页庄闪闪的R语言手册R数据科学|3.6习题解答

R数据科学|3.6习题解答

问题一

通过头脑风暴,至少找出 5 种方法来确定一组航班的典型延误特征。思考以下场景。

  • 一架航班 50% 的时间会提前 15 分钟,50% 的时间会延误 15 分钟。
  • 一架航班总是会延误 10 分钟。
  • 一架航班 50% 的时间会提前 30 分钟,50% 的时间会延误 30 分钟。
  • 一架航班 99% 的时间会准时,1% 的时间会延误 2 个小时。哪一种更重要:到达延误还是出发延误?

解答

这个问题是数据分析的一个基本问题:成本函数。作为分析人员,我们之所以对航班延误感兴趣,是因为对乘客来说代价高昂。在许多情况下,到达延迟更重要。在大多数情况下,迟到对乘客来说成本更高,因为这可能会打乱其下一阶段的旅行,例如转机或预定的会议。如果出发在不影响到达时间的情况下延迟,则此延迟不会影响计划,也不会影响旅行总时间。如果在飞机上狭窄的范围内花费更少的时间,如果这种延迟时间仍然花在跑道上的狭窄范围内,那么这种延迟可能是有益的。

问题二

找出另外一种方法,这种方法要可以给出与not_cancelled %>% count(dest) 和 not_ cancelled %>% count(tailnum, wt = distance)同样的输出(不能使用count())。

解答

  • 方法一
not_cancelled %>% 
  count(dest)
  • 方法二
not_cancelled %>%
  group_by(dest) %>%
  summarise(n = length(dest))
  • 方法三
not_cancelled %>%
  group_by(dest) %>%
  summarise(n = n())

问题三

我们对已取消航班的定义(is.na(dep_delay)) | (is.na(arr_delay))稍有欠佳。为什么?哪一列才是最重要的?

解答

如果一架飞机从来没有离开过,那么它就不会到达。如果飞机坠毁,飞机也可能离开而没有到达,或者飞机改道而降落在目的地以外的机场。因此,最重要的列是arr_delay,它表示到达延误次数。

问题四

查看每天取消的航班数量。其中存在模式吗?已取消航班的比例与平均延误时间有关系吗?

解答

一种模式是,取消航班的数量随着每天航班总数的增加而增加。取消航班的比例随着航班的平均延误而增加。从下列代码中可以看出规律:

cancelled_per_day <- 
  flights %>%
  mutate(cancelled = (is.na(arr_delay) | is.na(dep_delay))) %>%
  group_by(year, month, day) %>%
  summarise(
    cancelled_num = sum(cancelled),
    flights_num = n(),
  )
  ggplot(cancelled_per_day) +
  geom_point(aes(x = flights_num, y = cancelled_num)) 

航班取消的比例和平均起飞延误之间的关系:

cancelled_and_delays <- 
  flights %>%
  mutate(cancelled = (is.na(arr_delay) | is.na(dep_delay))) %>%
  group_by(year, month, day) %>%
  summarise(
    cancelled_prop = mean(cancelled),
    avg_dep_delay = mean(dep_delay, na.rm = TRUE),
    avg_arr_delay = mean(arr_delay, na.rm = TRUE)
  ) %>%
  ungroup()
  ggplot(cancelled_and_delays) +
  geom_point(aes(x = avg_dep_delay, y = cancelled_prop))

问题五

哪个航空公司的延误情况最严重?挑战:你能否分清这是由于糟糕的机场设备,还是航空公司的问题?为什么能?为什么不能?(提示:考虑一下flights %>% group_by(carrier, dest) %>% summarize(n())。)

解答

延误情况最严重的航空公司:

1:3 + 1:10
flights %>%
 group_by(carrier) %>%
 summarise(arr_delay = mean(arr_delay, na.rm = TRUE)) %>%
 arrange(desc(arr_delay))

通过比较每个航空公司的平均延误和同一航线内航班的平均延误(从同一出发地到同一目的地的航班),你可以弄清机场和航空公司的影响。比较承运人之间和每条航线内的延误,可以理清承运人和机场的影响。更好的分析方法是将一家航空公司航班的平均延误与同一航线内所有其他航空公司航班的平均延误进行比较。

flights %>%
  filter(!is.na(arr_delay)) %>%
  group_by(origin, dest, carrier) %>%
  summarise(
    arr_delay = sum(arr_delay),
    flights = n()
  ) %>%
  group_by(origin, dest) %>%
  mutate(
    arr_delay_total = sum(arr_delay),
    flights_total = sum(flights)
  ) %>%
  ungroup() %>%
  mutate(
    arr_delay_others = (arr_delay_total - arr_delay) /
      (flights_total - flights),
    arr_delay_mean = arr_delay / flights,
    arr_delay_diff = arr_delay_mean - arr_delay_others
  ) %>%
  filter(is.finite(arr_delay_diff)) %>%
  group_by(carrier) %>%
  summarise(arr_delay_diff = mean(arr_delay_diff)) %>%
  arrange(desc(arr_delay_diff))

问题六

count() 函数中的 sort 参数的作用是什么?何时应该使用这个参数?

解答

排序参数,以对结果进行排序。想对结果排序的时候都可以使用sort。

本文分享自微信公众号 - 庄闪闪的R语言手册(Zss_R4ds),作者:我才是赵西西

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-12-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • R数据科学|5.5.1 习题解答

    前面对比了已取消航班和未取消航班的出发时间,使用学习到的知识对这个对比的可视化结果进行改善。

    庄闪闪
  • R数据科学|5.3课后习题解答

    研究 x、y 和 z 变量在 diamonds 数据集中的分布。你能发现什么?思考一下,对于一条钻石数据,如何确定表示长、宽和高的变量?

    庄闪闪
  • R数据科学|3.4内容介绍及习题解答

    通过基于变量名的操作,select()函数可以让你生成一个有用的变量子集。基本用法如下:

    庄闪闪
  • R数据科学|3.7内容介绍及习题解答

    虽然与summarize()函数结合起来使用是最有效的,但分组也可以与mutate()和filter()函数结合,以完成非常便捷的操作。示例如下:

    庄闪闪
  • R数据科学|3.5内容介绍及习题解答

    上节我们对选择现有的列进行了介绍与习题解答,现在对数据框添加新列进行介绍,这里使用mutate()函数,注意:mutate()总是将新列添加在数据集的最后。

    庄闪闪
  • R数据科学|5.4内容介绍及习题解答

    我们不建议使用这种方式,因为一个无效测量不代表所有测量都是无效的。此外,如果数据质量不高,若对每个变量都采取这种做法,那么你最后可能会发现数据已经所剩无几!

    庄闪闪
  • R数据科学|3.6内容介绍

    上节我们对选择现有的列和使用mutate添加新列做了介绍。现在对数据框使用summarize()进行分组摘要进行介绍。函数功能:summarize()可以将数据...

    庄闪闪
  • R数据科学|5.5.2内容介绍及课后习题解答

    要想对两个分类变量间的相关变动进行可视化表示,需要计算出每个变量组合中的观测数量。常用的两种方法有:

    庄闪闪
  • R数据科学|3.2.4课后习题

    《R数据科学》是一本很好的R学习教材,这里给出第三章3.2.4[1]习题解答,仅供参考。如有误,望指正。

    庄闪闪
  • R数据科学|3.3课后习题

    《R数据科学》是一本很好的R学习教材,小编学习过程中,把作业题做了一下,今天给出第三章3.3[1]习题解答,仅供参考。如有误,可留言。

    庄闪闪
  • 开发 | Python赶超R语言,成为数据科学、机器学习平台中最热门语言?

    AI科技评论消息,近日,kdnuggets做了一个关于数据科学、机器学习语言使用情况的问卷调查,他们分析了954个回答,得出结论——Python已经打败R语言,...

    AI科技评论
  • Python赶超R语言,成为数据科学、机器学习平台中最热门的语言?

    近日,kdnuggets 做了一个关于数据科学、机器学习语言使用情况的问卷调查,他们分析了 954 个回答,得出结论——Python 已经打败 R 语言,成为分...

    AI研习社
  • 如何用《玉树芝兰》入门数据科学?

    链接起散落的文章,给《玉树芝兰》数据科学系列教程做个导读,帮你更为高效入门数据科学。

    王树义
  • 【数据科学】数据科学能回答什么样的问题?

    机器学习是数据科学的发动机。每种机器学习方法(也称为算法)获取数据,反复咀嚼,输出结果。机器学习算法负责数据科学里最难以解释又最有趣的部分。数学的魔法在此发生。...

    陆勤_数据人网
  • 如何高效入门数据科学?

    说明:本文是我数据科学系列教程的导读。因为微信公众号文章一经发布,便不能大篇幅编辑内容,后续发布的新教程无法加入进来。所以我只得选择不定期更新发布本文的最新版,...

    王树义
  • 《利用Python进行数据分析·第2版》第1章 准备工作1.1 本书的内容1.2 为什么要使用Python进行数据分析1.3 重要的Python库matplotlibIPython和JupyterSc

    下载本书:http://www.jianshu.com/p/fad9e41c1a42(更新为GitHub链接) 下载本书代码:https://github.c...

    SeanCheney
  • 学习数据分析,有哪些好书值得读?都在这里了

    导读:这个年代里,“用数据说话”已经像是一种过气的口号。各行各业不同角色和身份的人们都已懂得“用数据说话”的重要性,甚至日常生活中也需要用数据看清事实,科学吃瓜...

    华章科技
  • 2017年最全的数据科学学习计划(1)

    导读 希望这篇学习路线图对你学习数据科学有帮助,需要说明的是国内本文中所说的数据科学家在国内一般称为数据分析师或者数据挖掘师,尽管称谓不同,但文章的路线图仍可...

    小莹莹
  • 定了!Python 团队将于 2020 年 1 月 1 日停止支持 Python 2.7

    AI 研习社消息,日前,Python 初始设计者及主要架构师 Guido van Rossum 在 Python 官方邮件组表示,他们将于 2020 年 1 月...

    AI研习社

扫码关注云+社区

领取腾讯云代金券