library(tidyverse)
library(lubridate)
library(nycflights13)
library(ggplot2)
library(dplyr) # alternatively, this also loads %>%
#Exercise 16.2.4
#1-What happens if you parse a string that contains invalid dates? #“ymd(c(”2010-10-10“,”bananas“))”
#Solution: as ‘bananas’ is not a date or time zone it represent as ‘NA’
ymd(c("2010-10-10", "bananas"))
1 failed to parse.
[1] "2010-10-10" NA
#2-What does the tzone argument to today() do? Why is it important?
#Solution:a character vector specifying which time zone. as the user may locate in diffrent time zones the ‘Today()’ function with time zone argument shows the time based on the user’s computer’s system timezone.
?today()
#3-Use the appropriate lubridate function to parse each of the following dates:
#d1 <- “January 1, 2010” #d2 <- “2015-Mar-07” #d3 <- “06-Jun-2017” #d4 <- c(“August 19 (2015)”, “July 1 (2015)”) #d5 <- “12/30/14” # Dec 30, 2014
d1 <- "January 1, 2010"
d2 <- "2015-Mar-07"
d3 <- "06-Jun-2017"
d4 <- c("August 19 (2015)", "July 1 (2015)")
d5 <- "12/30/14" # Dec 30, 2014
mdy(d1)
ymd(d2)
dmy(d3)
mdy(d4)
mdy(d5)
#16.3.4 Exercises
#How does the distribution of flight times within a day change over the course of the year?
flights %>%
select(year, month, day, hour, minute)
flights_dt = flights
flights_dt %>%
mutate(wday = wday(dep_time, label = TRUE)) %>%
ggplot(aes(x = wday)) +
geom_bar()
#2.Compare dep_time, sched_dep_time and dep_delay. Are they consistent? Explain your
#Solution: yes some of flights were constant as they had 0 delay time.
View(flights)
x= mutate(flights, quality_of_dep=dep_time - sched_dep_time )
y=filter(x, quality_of_dep ==0 )
x
y
#3.Compare air_time with the duration between the departure and arrival. Explain your findings. (Hint: consider the location of the airport.)
#Solution: we notced that majority of duration are in negative value and some of air times are longer than the flight duration!
a=flights %>%
group_by(origin,dest) %>%
mutate(the_duration=arr_time-dep_time,na.rm=TRUE)%>%
select(arr_time,dep_time,air_time,the_duration)
View(a)
#4.How does the average delay time change over the course of a day? Should you use dep_time or sched_dep_time? Why?
#5.On what day of the week should you leave if you want to minimise the chance of a delay?
weekd=select(flights,)
x=mutate(flights,y=wday(time_hour))
g=group_by(x,y)
f=mutate(g,avgdelay= mean(dep_delay,na.rm = TRUE))
b=select(f,y,avgdelay)
print(b)
NA
#6.What makes the distribution of diamonds\(carat and flights\)sched_dep_time similar?
#16.4.5 Exercises
#1-Why is there months() but no dmonths()?
d=today()
a=month(d)
b=day(d)
c=wday(d)
f=yday(d)
r=mday(d)
m=months(d)
#t=dmonths(d)#Error in Ops.Date(x, average_durations[["month"]]) : * not defined for "Date" objects.
d
a
b
c
f
r
m
#2-Explain days(overnight * 1) to someone who has just started learning R. How does it work?
#3-Create a vector of dates giving the first day of every month in 2015. Create a vector of dates giving the first day of every month in the current year.
year_2015 <- years(2015) + months(c(1:12)) + days(1)
year_2015
[1] "2015y 1m 1d 0H 0M 0S" "2015y 2m 1d 0H 0M 0S" "2015y 3m 1d 0H 0M 0S"
[4] "2015y 4m 1d 0H 0M 0S" "2015y 5m 1d 0H 0M 0S" "2015y 6m 1d 0H 0M 0S"
[7] "2015y 7m 1d 0H 0M 0S" "2015y 8m 1d 0H 0M 0S" "2015y 9m 1d 0H 0M 0S"
[10] "2015y 10m 1d 0H 0M 0S" "2015y 11m 1d 0H 0M 0S" "2015y 12m 1d 0H 0M 0S"
year_current <- years(year(today())) + months(c(1:12)) + days(1)
year_current
[1] "2020y 1m 1d 0H 0M 0S" "2020y 2m 1d 0H 0M 0S" "2020y 3m 1d 0H 0M 0S"
[4] "2020y 4m 1d 0H 0M 0S" "2020y 5m 1d 0H 0M 0S" "2020y 6m 1d 0H 0M 0S"
[7] "2020y 7m 1d 0H 0M 0S" "2020y 8m 1d 0H 0M 0S" "2020y 9m 1d 0H 0M 0S"
[10] "2020y 10m 1d 0H 0M 0S" "2020y 11m 1d 0H 0M 0S" "2020y 12m 1d 0H 0M 0S"
#4-Write a function that given your birthday (as a date), returns how old you are in years.
calculate_age = function(yourdate){
age = year(today())-year((yourdate))
age
}
calculate_age('1994-06-29')
[1] 26
#5-Why can’t (today() %–% (today() + years(1))) / months(1) work?
(today() %--% (today() + years(1))) / months(1) #it seems it is working! but we are not sure the result is what was expected.
[1] 12
LS0tDQp0aXRsZTogIkFzc2lnbm1lbnRfZGF0ZV90aW1lIg0Kb3V0cHV0OiBodG1sX25vdGVib29rDQotLS0NCg0KYGBge3J9DQpsaWJyYXJ5KHRpZHl2ZXJzZSkNCmxpYnJhcnkobHVicmlkYXRlKQ0KbGlicmFyeShueWNmbGlnaHRzMTMpDQpsaWJyYXJ5KGdncGxvdDIpDQpsaWJyYXJ5KGRwbHlyKSAgICAjIGFsdGVybmF0aXZlbHksIHRoaXMgYWxzbyBsb2FkcyAlPiUNCg0KDQpgYGANCg0KI0V4ZXJjaXNlIDE2LjIuNA0KDQojMS1XaGF0IGhhcHBlbnMgaWYgeW91IHBhcnNlIGEgc3RyaW5nIHRoYXQgY29udGFpbnMgaW52YWxpZCBkYXRlcz8NCiMieW1kKGMoIjIwMTAtMTAtMTAiLCAiYmFuYW5hcyIpKSINCg0KI1NvbHV0aW9uOiBhcyAnYmFuYW5hcycgaXMgbm90IGEgZGF0ZSBvciB0aW1lIHpvbmUgaXQgcmVwcmVzZW50IGFzICdOQScNCg0KYGBge3J9DQp5bWQoYygiMjAxMC0xMC0xMCIsICJiYW5hbmFzIikpDQpgYGANCg0KIzItV2hhdCBkb2VzIHRoZSB0em9uZSBhcmd1bWVudCB0byB0b2RheSgpIGRvPyBXaHkgaXMgaXQgaW1wb3J0YW50Pw0KDQojU29sdXRpb246YSBjaGFyYWN0ZXIgdmVjdG9yIHNwZWNpZnlpbmcgd2hpY2ggdGltZSB6b25lLiBhcyB0aGUgdXNlciBtYXkgbG9jYXRlIGluIGRpZmZyZW50IHRpbWUgem9uZXMgdGhlICdUb2RheSgpJyBmdW5jdGlvbiB3aXRoIHRpbWUgem9uZSBhcmd1bWVudCBzaG93cyB0aGUgdGltZSBiYXNlZCBvbiB0aGUgdXNlcidzIGNvbXB1dGVyJ3Mgc3lzdGVtIHRpbWV6b25lLg0KDQpgYGB7cn0NCj90b2RheSgpDQpgYGANCg0KIzMtVXNlIHRoZSBhcHByb3ByaWF0ZSBsdWJyaWRhdGUgZnVuY3Rpb24gdG8gcGFyc2UgZWFjaCBvZiB0aGUgZm9sbG93aW5nIGRhdGVzOg0KDQojZDEgPC0gIkphbnVhcnkgMSwgMjAxMCINCiNkMiA8LSAiMjAxNS1NYXItMDciDQojZDMgPC0gIjA2LUp1bi0yMDE3Ig0KI2Q0IDwtIGMoIkF1Z3VzdCAxOSAoMjAxNSkiLCAiSnVseSAxICgyMDE1KSIpDQojZDUgPC0gIjEyLzMwLzE0IiAjIERlYyAzMCwgMjAxNA0KDQpgYGB7cn0NCmQxIDwtICJKYW51YXJ5IDEsIDIwMTAiDQpkMiA8LSAiMjAxNS1NYXItMDciDQpkMyA8LSAiMDYtSnVuLTIwMTciDQpkNCA8LSBjKCJBdWd1c3QgMTkgKDIwMTUpIiwgIkp1bHkgMSAoMjAxNSkiKQ0KZDUgPC0gIjEyLzMwLzE0IiAjIERlYyAzMCwgMjAxNA0KYGBgDQoNCmBgYHtyfQ0KbWR5KGQxKQ0KeW1kKGQyKQ0KZG15KGQzKQ0KbWR5KGQ0KQ0KbWR5KGQ1KQ0KDQoNCmBgYA0KIzE2LjMuNCBFeGVyY2lzZXMNCg0KI0hvdyBkb2VzIHRoZSBkaXN0cmlidXRpb24gb2YgZmxpZ2h0IHRpbWVzIHdpdGhpbiBhIGRheSBjaGFuZ2Ugb3ZlciB0aGUgY291cnNlIG9mIHRoZSB5ZWFyPw0KDQpgYGB7cn0NCmZsaWdodHMgJT4lIA0KICBzZWxlY3QoeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlKQ0KDQoNCmZsaWdodHNfZHQgPSBmbGlnaHRzDQpmbGlnaHRzX2R0ICU+JSANCiAgbXV0YXRlKHdkYXkgPSB3ZGF5KGRlcF90aW1lLCBsYWJlbCA9IFRSVUUpKSAlPiUgDQogIGdncGxvdChhZXMoeCA9IHdkYXkpKSArDQogICAgZ2VvbV9iYXIoKQ0KYGBgDQoNCg0KIzIuQ29tcGFyZSBkZXBfdGltZSwgc2NoZWRfZGVwX3RpbWUgYW5kIGRlcF9kZWxheS4gQXJlIHRoZXkgY29uc2lzdGVudD8gRXhwbGFpbiB5b3VyIA0KDQojU29sdXRpb246IHllcyBzb21lIG9mIGZsaWdodHMgd2VyZSBjb25zdGFudCBhcyB0aGV5IGhhZCAwIGRlbGF5IHRpbWUuDQoNCmBgYHtyfQ0KVmlldyhmbGlnaHRzKQ0KDQoNCmBgYA0KDQoNCmBgYHtyfQ0KIHg9ICBtdXRhdGUoZmxpZ2h0cywgcXVhbGl0eV9vZl9kZXA9ZGVwX3RpbWUgLSBzY2hlZF9kZXBfdGltZSApDQp5PWZpbHRlcih4LCBxdWFsaXR5X29mX2RlcCA9PTAgKQ0KeA0KeQ0KYGBgDQoNCiMzLkNvbXBhcmUgYWlyX3RpbWUgd2l0aCB0aGUgZHVyYXRpb24gYmV0d2VlbiB0aGUgZGVwYXJ0dXJlIGFuZCBhcnJpdmFsLiBFeHBsYWluIHlvdXIgZmluZGluZ3MuIChIaW50OiBjb25zaWRlciB0aGUgbG9jYXRpb24gb2YgdGhlIGFpcnBvcnQuKQ0KDQojU29sdXRpb246IHdlIG5vdGNlZCB0aGF0IG1ham9yaXR5IG9mIGR1cmF0aW9uIGFyZSBpbiBuZWdhdGl2ZSB2YWx1ZSBhbmQgc29tZSBvZiBhaXIgdGltZXMgYXJlIGxvbmdlciB0aGFuIHRoZSBmbGlnaHQgZHVyYXRpb24hDQoNCmBgYHtyfQ0KYT1mbGlnaHRzICU+JSANCiAgZ3JvdXBfYnkob3JpZ2luLGRlc3QpICU+JSANCiAgbXV0YXRlKHRoZV9kdXJhdGlvbj1hcnJfdGltZS1kZXBfdGltZSxuYS5ybT1UUlVFKSU+JQ0KICBzZWxlY3QoYXJyX3RpbWUsZGVwX3RpbWUsYWlyX3RpbWUsdGhlX2R1cmF0aW9uKQ0KVmlldyhhKQ0KYGBgDQojNC5Ib3cgZG9lcyB0aGUgYXZlcmFnZSBkZWxheSB0aW1lIGNoYW5nZSBvdmVyIHRoZSBjb3Vyc2Ugb2YgYSBkYXk/IFNob3VsZCB5b3UgdXNlIGRlcF90aW1lIG9yIHNjaGVkX2RlcF90aW1lPyBXaHk/DQoNCmBgYHtyfQ0KDQpgYGANCiM1Lk9uIHdoYXQgZGF5IG9mIHRoZSB3ZWVrIHNob3VsZCB5b3UgbGVhdmUgaWYgeW91IHdhbnQgdG8gbWluaW1pc2UgdGhlIGNoYW5jZSBvZiBhIGRlbGF5Pw0KDQpgYGB7cn0NCndlZWtkPXNlbGVjdChmbGlnaHRzLCkNCng9bXV0YXRlKGZsaWdodHMseT13ZGF5KHRpbWVfaG91cikpDQpnPWdyb3VwX2J5KHgseSkNCmY9bXV0YXRlKGcsYXZnZGVsYXk9IG1lYW4oZGVwX2RlbGF5LG5hLnJtID0gVFJVRSkpDQpiPXNlbGVjdChmLHksYXZnZGVsYXkpDQpwcmludChiKQ0KDQpgYGAgICANCg0KIzYuV2hhdCBtYWtlcyB0aGUgZGlzdHJpYnV0aW9uIG9mIGRpYW1vbmRzJGNhcmF0IGFuZCBmbGlnaHRzJHNjaGVkX2RlcF90aW1lIHNpbWlsYXI/DQpgYGB7cn0NCmBgYA0KDQojMTYuNC41IEV4ZXJjaXNlcw0KDQojMS1XaHkgaXMgdGhlcmUgbW9udGhzKCkgYnV0IG5vIGRtb250aHMoKT8NCg0KYGBge3J9DQpkPXRvZGF5KCkNCmE9bW9udGgoZCkNCmI9ZGF5KGQpDQpjPXdkYXkoZCkNCmY9eWRheShkKQ0Kcj1tZGF5KGQpDQptPW1vbnRocyhkKQ0KI3Q9ZG1vbnRocyhkKSNFcnJvciBpbiBPcHMuRGF0ZSh4LCBhdmVyYWdlX2R1cmF0aW9uc1tbIm1vbnRoIl1dKSA6ICogbm90IGRlZmluZWQgZm9yICJEYXRlIiBvYmplY3RzLg0KZA0KYQ0KYg0KYw0KZg0Kcg0KbQ0KDQpgYGANCg0KIzItRXhwbGFpbiBkYXlzKG92ZXJuaWdodCAqIDEpIHRvIHNvbWVvbmUgd2hvIGhhcyBqdXN0IHN0YXJ0ZWQgbGVhcm5pbmcgUi4gSG93IGRvZXMgaXQgd29yaz8NCg0KYGBge3J9DQoNCmBgYA0KDQojMy1DcmVhdGUgYSB2ZWN0b3Igb2YgZGF0ZXMgZ2l2aW5nIHRoZSBmaXJzdCBkYXkgb2YgZXZlcnkgbW9udGggaW4gMjAxNS4gQ3JlYXRlIGEgdmVjdG9yIG9mIGRhdGVzIGdpdmluZyB0aGUgZmlyc3QgZGF5IG9mIGV2ZXJ5IG1vbnRoIGluIHRoZSBjdXJyZW50IHllYXIuDQoNCg0KYGBge3J9DQoNCnllYXJfMjAxNSA8LSB5ZWFycygyMDE1KSArIG1vbnRocyhjKDE6MTIpKSArIGRheXMoMSkNCnllYXJfMjAxNQ0KeWVhcl9jdXJyZW50IDwtIHllYXJzKHllYXIodG9kYXkoKSkpICsgbW9udGhzKGMoMToxMikpICsgZGF5cygxKQ0KeWVhcl9jdXJyZW50DQpgYGANCg0KIzQtV3JpdGUgYSBmdW5jdGlvbiB0aGF0IGdpdmVuIHlvdXIgYmlydGhkYXkgKGFzIGEgZGF0ZSksIHJldHVybnMgaG93IG9sZCB5b3UgYXJlIGluIHllYXJzLg0KDQpgYGB7cn0NCmNhbGN1bGF0ZV9hZ2UgPSBmdW5jdGlvbih5b3VyZGF0ZSl7DQogIGFnZSA9IHllYXIodG9kYXkoKSkteWVhcigoeW91cmRhdGUpKQ0KICBhZ2UNCn0NCmNhbGN1bGF0ZV9hZ2UoJzE5OTQtMDYtMjknKQ0KYGBgDQojNS1XaHkgY2Fu4oCZdCAodG9kYXkoKSAlLS0lICh0b2RheSgpICsgeWVhcnMoMSkpKSAvIG1vbnRocygxKSB3b3JrPw0KDQoNCmBgYHtyfQ0KICh0b2RheSgpICUtLSUgKHRvZGF5KCkgKyB5ZWFycygxKSkpIC8gbW9udGhzKDEpICNpdCBzZWVtcyBpdCBpcyB3b3JraW5nISBidXQgd2UgYXJlIG5vdCBzdXJlIHRoZSByZXN1bHQgaXMgd2hhdCB3YXMgZXhwZWN0ZWQuDQpgYGANCg==