| Please choose a course, or type 0 to exit swirl.
1: R Programming 2: Take me to the swirl course repository!
Selection: 1
| Please choose a lesson, or type 0 to return to course menu.
1: Basic Building Blocks 2: Workspace and Files 3: Sequences of Numbers 4: Vectors 5: Missing Values 6: Subsetting Vectors 7: Matrices and Data Frames 8: Logic 9: Functions 10: lapply and sapply 11: vapply and tapply 12: Looking at Data 13: Simulation 14: Dates and Times 15: Base Graphics
Selection: 14
| | 0%
| R has a special way of representing dates and times, which | can be helpful if you | something changes over time (i.e. time-series data) or if | your data contain some other temporal information, like | dates of birth.
...
|= | 3%
| Dates are represented by the | represented by the | Internally, dates are stored as the number of days since | 1970-01-01 and times are stored as either the number of | seconds since 1970-01-01 (for | seconds, minutes, hours, etc. (for
...
|=== | 6%
| Let [1] "Date"
| You nailed it! Good job!
|====== | 11%
| We can use the unclass() function to see what d1 looks like | internally. Try it out.
> unclass(d1) [1] 16571
| You got it!
|======= | 14%
| That
...
|========= | 17%
| However, if you print d1 to the console, you | date -- YEAR-MONTH-DAY. Give it a try.
> d1 [1] "2015-05-16"
| Keep working like that and you
|========== | 20%
| What if we need to reference a date prior to 1970-01-01? | Create a variable d2 containing as.Date("1969-01-01").
> d2<-as.Date("1969-01-01")
| You nailed it! Good job!
|============ | 23%
| Now use unclass() again to see what d2 looks like | internally.
> unclass(d2) [1] -365
| You are amazing!
|============= | 26%
| As you may have anticipated, you get a negative number. In | this case, it | calendar year (i.e. 365 days) BEFORE 1970-01-01.
...
|=============== | 29%
| Now, let | access the current date and time using the Sys.time() | function with no arguments. Do this and store the result in | a variable called t1.
> t1<-Sys.time()
| All that hard work is paying off!
|================ | 31%
| View the contents of t1.
> t1 [1] "2015-05-16 11:08:48 CST"
| That
|================== | 34%
| And check the class() of t1.
> class(t1) [1] "POSIXct" "POSIXt"
| You
|=================== | 37%
| As mentioned earlier, POSIXct is just one of two ways that | R represents time information. (You can ignore the second | value above, POSIXt, which just functions as a common | language between POSIXct and POSIXlt.) Use unclass() to see | what t1 looks like internally -- the (large) number of | seconds since the beginning of 1970.
> unclass(t1) [1] 1431745729
| Excellent work!
|===================== | 40%
| By default, Sys.time() returns an object of class POSIXct, | but we can coerce the result to POSIXlt with | as.POSIXlt(Sys.time()). Give it a try and store the result | in t2.
> t2<-as.POSIXlt(Sys.time())
| Excellent job!
|====================== | 43%
| Check the class of t2.
> class(t2) [1] "POSIXlt" "POSIXt"
| Keep working like that and you
|======================== | 46%
| Now view its contents.
> t2 [1] "2015-05-16 11:12:57 CST"
| Nice work!
|========================= | 49%
| The printed format of t2 is identical to that of t1. Now | unclass() t2 to see how it is different internally.
> unclass(t2) $sec [1] 57.47574
$min [1] 12
$hour [1] 11
$mday [1] 16
$mon [1] 4
$year [1] 115
$wday [1] 6
$yday [1] 135
$isdst [1] 0
$zone [1] "CST"
$gmtoff [1] 28800
attr(,"tzone") [1] "" "CST" "CDT"
| Nice work!
|=========================== | 51%
| t2, like all POSIXlt objects, is just a list of values that | make up the date and time. Use str(unclass(t2)) to have a | more compact view.
> str(unclass(t2)) List of 11 $ sec : num 57.5 $ min : int 12 $ hour : int 11 $ mday : int 16 $ mon : int 4 $ year : int 115 $ wday : int 6 $ yday : int 135 $ isdst : int 0 $ zone : chr "CST" $ gmtoff: int 28800 - attr(*, "tzone")= chr [1:3] "" "CST" "CDT"
| Great job!
|============================ | 54%
| If, for example, we want just the minutes from the time | stored in t2, we can access them with t2$min. Give it a | try.
> t2$min [1] 12
| Keep up the great work!
|============================== | 57%
| Now that we have explored all three types of date and time | objects, let | information from any of these objects -- weekdays(), | months(), and quarters().
...
|=============================== | 60%
| The weekdays() function will return the day of week from | any date or time object. Try it out on d1, which is the | Date object that contains today
> weekdays(d1) [1] "Saturday"
| You got it right!
|================================= | 63%
| The months() function also works on any date or time | object. Try it on t1, which is the POSIXct object that | contains the current time (well, it was the current time | when you created it).
> months(t1) [1] "May"
| Excellent work!
|================================== | 66%
| The quarters() function returns the quarter of the year | (Q1-Q4) from any date or time object. Try it on t2, which | is the POSIXlt object that contains the time at which you | created it.
> quarters(t2) [1] "Q2"
| Keep up the great work!
|==================================== | 69%
| Often, the dates and times in a dataset will be in a format | that R does not recognize. The strptime() function can be | helpful in this situation.
...
|===================================== | 71%
| strptime() converts character vectors to POSIXlt. In that | sense, it is similar to as.POSIXlt(), except that the input | doesn
...
|======================================= | 74%
| To see how it works, store the following character string | in a variable called t3: "October 17, 1986 08:24" (with the | quotes).
> t3<-"October 17, 1986 08:24"
| You nailed it! Good job!
|======================================== | 77%
| Now, use strptime(t3, "%B %d, %Y %H:%M") to help R convert | our date/time object to a format that it understands. | Assign the result to a new variable called t4. (You should | pull up the documentation for strptime() if you | know more about how it works.)
> ?strptime > t4<-strptime(t3,"%B %d, %Y %H:%M")
| You are quite good my friend!
|========================================== | 80%
| Print the contents of t4.
> t4 [1] "1986-10-17 08:24:00 CST"
| Perseverance, that
|=========================================== | 83%
| That | its class().
> class(t4) [1] "POSIXlt" "POSIXt"
| You
|============================================= | 86%
| Finally, there are a number of operations that you can | perform on dates and times, including arithmetic operations | (+ and -) and comparisons (<, ==, etc.)
...
|============================================== | 89%
| The variable t1 contains the time at which you created it | (recall you used Sys.time()). Confirm that some time has | passed since you created t1 by using the | operator to compare it to the current time: Sys.time() > t1
> Sys.time() > t1 [1] TRUE
| That
|================================================ | 91%
| So we know that some time has passed, but how much? Try | subtracting t1 from the current time using Sys.time() - t1. | Don | since it is a function.
> Sys.time() - t1 Time difference of 28.06015 mins
| You are amazing!
|================================================= | 94%
| The same line of thinking applies to addition and the other | comparison operators. If you want more control over the | units when finding the above difference in times, you can | use difftime(), which allows you to specify a | parameter.
...
|=================================================== | 97%
| Use difftime(Sys.time(), t1, units = | amount of time in DAYS that has passed since you created | t1.
> difftime(Sys.time(),t1,units= Time difference of 0.02175513 days
| You
|====================================================| 100%
| In this lesson, you learned how to work with dates and | times in R. While it is important to understand the basics, | if you find yourself working with dates and times often, | you may want to check out the lubridate package by Hadley | Wickham.
...
| Are you currently enrolled in the Coursera course | associated with this lesson?
1: Yes 2: No
Selection: 2
| You | main menu...
|