搜索
查看: 851|回复: 0

[R] 小洁详解《R数据科学》--插播dplyr习题

[复制链接]

25

主题

49

帖子

326

积分

中级会员

Rank: 3Rank: 3

积分
326
发表于 2018-9-6 22:17:22 | 显示全部楼层 |阅读模式
本帖最后由 hijack 于 2018-9-6 22:24 编辑

P42页习题3.2.4,对应英文版5.2.4
1.找出满足以下条件的所有航班a.到达时间延误两小时及以上?flights

从帮助文档得知,到达时间延误是arr_delay,单位是分钟。
[AppleScript] 纯文本查看 复制代码
filter(flights, arr_delay >= 120)

b.飞往休斯顿(IAH 或 HOU机场)
根据目的地(destination)即表中的dest筛选
[AppleScript] 纯文本查看 复制代码
filter(flights, dest =="IAH"| dest =="HOU")
filter(flights, dest %in% c("IAH", "HOU"))#简单写法

c.由 United, American,  Delta(航空公司)运营
由帮助信息得知,航空公司与缩写的对应关系在arilines里。
View(airlines)
[AppleScript] 纯文本查看 复制代码
filter(flights,carrier %in% c("AA","DL","UA"))

d.7-9月出发的航班
[AppleScript] 纯文本查看 复制代码
filter(flights, month >= 7, month <= 9)
filter(flights, month >= 7&month <= 9)
filter(flights, month %in% c(7:9))
filter(flights, month %in% c(7,8,9))

e.到达延误两小时及以上,但出发没有延误

[AppleScript] 纯文本查看 复制代码
filter(flights, arr_delay>=60&dep_delay == 0)
filter(flights, arr_delay>=60,dep_delay == 0)

f.起飞延误至少1h,但飞行过程弥补回30min的航班
分析:如果飞行时间完全按照计划的话,到达延误和起飞延误时间应该是一样的。所以后半句话的意思是到达延误时间比起飞延误时间小30min。
但我疑虑的是正好弥回30min还是30min以上呢?(
除此之外,用计划飞行时间减去实际飞行时间≥30应该也是可以的。
查阅了标准答案是:
[AppleScript] 纯文本查看 复制代码
filter(flights,dep_delay>=60,arr_delay<=dep_delay-30)

根据答案判断,题目的应该是表达飞行过程弥补回30min以上。如果按照正好30min算的话应该是
[AppleScript] 纯文本查看 复制代码
filter(flights,dep_delay>=60,arr_delay==dep_delay-30)

g.起飞时间在0-6点之间。(包括0和6)
  
小洁分析:查了一下起飞时间的格式是HHMM或HMM,那0-6点就是<=600。问题是0点会表示为000还是2400呢,试一下:

因此零点的表示应该是2400
[AppleScript] 纯文本查看 复制代码
filter(flights, dep_time <= 600 | dep_time == 2400)

2.between函数
[AppleScript] 纯文本查看 复制代码
between(x, left, right) 等价于x >= left & x <= right。

因此上一题的d可使用:
filter(flights, between(month, 7, 9))
3.有多少航班缺失了dep_time?其他列的缺失情况如何?这样的行表示什么情况?count(flights, is.na(dep_time))
filter(flights, is.na(dep_time))
没有起飞时间、也没有到达时间,只有计划的数据,所以这些航班是被取消掉了~
4.NA奇怪的逻辑和规律(1)Why is NA ^ 0 not missing?
任何数的零次方都是1
(2)Why is NA | TRUE not missing? Why is FALSE & NA not missing?
  • 任何数|TRUE都是TURE
  • 任何数&FALSE都是FALSE
    ps:NA | FALSE 和 NA & TRUE 都是NA。NA在逻辑计算中表示:不知道TRUE还是FALSE。

(3)任何数x0都是0,为什么NAx0却等于NA?
↓此处是我偷窥了答案。
因为x∞和  x−∞ 没有被定义。R将没有被定义的结果返回为NaN,也就是 not a number的缩写。
[AppleScript] 纯文本查看 复制代码
Inf * 0 #inf是正无穷
#> [1] NaN
-Inf * 0 #-inf是负无穷
#> [1] NaN




上一篇:我的StatQuest学习笔记——FDR及实现
下一篇:9.6 R数据科学学习
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|生信技能树    

GMT+8, 2019-5-22 18:00 , Processed in 0.034929 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.