Skip to content
R for Data Science

R for Data Science

Teach importing, tidying, transforming, visualizing, and modeling data

Select Ready-Made Modules to Build Your Course

Use checkboxes to select modules, drag them to rearrange course structure, click + to add assignments and modules.


R for Data Science is a popular textbook used for teaching data science using R. Hadley Wickam wrote the textbook. Codio has made R for Data Science available in its cloud-based teaching platform as editable, interactive courseware perfect for data science and statistics courses. 

R for Data Science has everything you need to teach data science with R, covering how to import data into R, how to format it into the proper structure, how to transform data, visualize data, and model data in R. 

This resource provides best practices for cleaning data, drawing plots, using the grammar of graphics, literate programming, reproducible research, and best practices for managing cognitive resources to facilitate discoveries when wrangling, visualizing, and exploring data.


Data science is a huge field, and there’s no way you can master it by reading a single book. The goal of this book is to give you a solid foundation in the most important tools.

Our model of the tools needed in a typical data science project looks something like this:

First, you must import your data into R. This typically means that you take data stored in a file, database, or web API and load it into a data frame in R. If you can’t get your data into R, you can’t do data science on it!

Once you’ve imported your data, it is a good idea to tidy it. Tidying your data means storing it in a consistent form that matches the dataset's semantics with the way it is stored. In brief, when your data is tidy, each column is a variable, and each row is an observation. Tidy data is important because the consistent structure lets you focus your struggle on questions about the data, not fighting to get the data into the right form for different functions.

Once you have tidy data, a common first step is to transform it. Transformation includes narrowing in on observations of interest (like all people in one city, or all data from the last year), creating new variables that are functions of existing variables (like computing speed from distance and time), and calculating a set of summary statistics (like counts or means). Together, tidying and transforming are called wrangling because getting your data in a form that’s natural to work with often feels like a fight!

Once you have tidy data with the variables you need, there are two main knowledge generation engines: visualization and modeling. These have complementary strengths and weaknesses so that any real analysis will iterate between them many times.

Visualization is a fundamentally human activity. A good visualization will show you things that you did not expect or raise new data questions. A good visualization might also hint that you’re asking the wrong question, or you need to collect different data. Visualizations can surprise you but don’t scale particularly well because they require a human to interpret them.

Models are complementary tools to visualization. Once you have made your questions sufficiently precise, you can use a model to answer them. Models are fundamentally mathematical or computational tools, so they generally scale well. Even when they don’t, it’s usually cheaper to buy more computers than to buy more brains! But every model makes assumptions, and by its very nature, a model cannot question its own assumptions. That means a model cannot fundamentally surprise you.

The last step of data science is communication, an absolutely critical part of any data analysis project. It doesn’t matter how well your models and visualization have led you to understand the data unless you can also communicate your results to others.

Surrounding all these tools is programming. Programming is a cross-cutting tool that you use in every part of the project. You don’t need to be an expert programmer to be a data scientist, but learning more about programming pays off because becoming a better programmer allows you to automate common tasks and solve new problems with greater ease.