Hi. I’m Sharon Machlis at IDG, here with
episode 36 of Do More With R: data.table in 5 minutes. Data.table is a package known for speed and
power for data wrangling and analysis. Fans say its syntax is both concise and consistent.
That syntax is also a bit different than either base R or the tidyverse. Let’s dive in and see how it works. A data table object is a type of data frame,
but with special features. There are a couple of ways to create one. Here I’ll load the
package and import a CSV file with about 645K rows and 20+ columns using data.table’s
fread() function. You can see fread() is super fast. Looking
at the object’s class, mydt is both a data frame and a data table. You can also turn an existing data frame into
a data.table with the as.data.table() function. I’ll create a data frame with base R’s
read.csv and then convert it. OK let me get rid of
the copies. Let’s take a look at the structure of mydt:
Now I’ve got a data.table here, too. We’ve got one row per flight, with info
like flight date, origin info, destination info, and some time and delay info. What if
I want to look at flight delays only from Boston to San Francisco by airline? Here’s the basic syntax for a LOT of things
you’ll want to do with data in data.table: Mydt open bracket I, j, by close bracket Which means: Start with mydt, subset or reorder
using I, calculate using j, and order by by. So. If I want to subset this data for the
origin being Logan Airport, which is BOS, all I have to do is put ORIGIN==BOS in that
I section. What if I want to look at flights from Boston
and to San Francisco? I just add a second condition I’ll run that code and save it in a new
variable called myresult. To calculate the average (or mean) delay in
minutes, I put the calculation in the j part. What I want is the mean of the ARR_DELAY_NEW
column, which gives delay in minutes. I need na.rm=TRUE to remove all the not
availables. Let me run that. You see now I have a single average for all
the delays. Next, I want the average delay by airline.
For that, I use the by part. Let me run that code. Hmmm. Those Airline carrier names aren’t
very intuitive. I don’t have much time to go into joining tables, but quickly so you
can see how easy it is . . . I’ve got a separate lookup table CSV with
airline codes and the airline names that I’ll import. Now here’s one way to do the join.
I’ll first set joining (and indexing) keys for each table – OP_UNIQUE_CARRIER for the
original data and Code for the lookup table. Then it’s just my lookup table with my original
data table in brackets. [ There are other ways to join data — which
I’ll explore in a future video since I’m out of time for this episode. Thanks for watching!
For more R tips, head to the Do More With R page at go dot infoworld dot com slash more
with R, all lowercase except for the R You can also find the Do More With R playlist
on the YouTube IDG Tech Talk channel — where you can subscribe so you never miss an episode.
Hope to see you next time!