# R Programming from the Ground Up Training

## Course duration

- 2 days

## Course Benefits

- Gain an introduction to R programming.
- Learn R data structures.
- Learn to work with R functions.
- Learn statistical data analysis with R.

## Course Outline

- What is R
- What is R?
- Positioning of R in the Data Science Space
- The Legal Aspects
- Microsoft R Open
- R Integrated Development Environments
- Running R
- Running RStudio
- Getting Help
- General Notes on R Commands and Statements
- Assignment Operators
- R Core Data Structures
- Assignment Example
- R Objects and Workspace
- Printing Objects
- Arithmetic Operators
- Logical Operators
- System Date and Time
- Operations
- User-defined Functions
- Control Statements
- Conditional Execution
- Repetitive Execution
- Repetitive execution
- Built-in Functions
- Summary

- Introduction to Functional Programming with R
- What is Functional Programming (FP)?
- Terminology: Higher-Order Functions
- A Short List of Languages that Support FP
- Functional Programming in R
- Vector and Matrix Arithmetic
- Vector Arithmetic Example
- More Examples of FP in R
- Summary

- Managing Your Environment
- Getting and Setting the Working Directory
- Getting the List of Files in a Directory
- The R Home Directory
- Executing External R commands
- Loading External Scripts in RStudio
- Listing Objects in Workspace
- Removing Objects in Workspace
- Saving Your Workspace in R
- Saving Your Workspace in RStudio
- Saving Your Workspace in R GUI
- Loading Your Workspace
- Diverting Output to a File
- Batch (Unattended) Processing
- Controlling Global Options
- Summary

- R Type System and Structures
- The R Data Types
- System Date and Time
- Formatting Date and Time
- Using the mode() Function
- R Data Structures
- What is the Type of My Data Structure?
- Creating Vectors
- Logical Vectors
- Character Vectors
- Factorization
- Multi-Mode Vectors
- The Length of the Vector
- Getting Vector Elements
- Lists
- A List with Element Names
- Extracting List Elements
- Adding to a List
- Matrix Data Structure
- Creating Matrices
- Creating Matrices with cbind() and rbind()
- Working with Data Frames
- Matrices vs Data Frames
- A Data Frame Sample
- Creating a Data Frame
- Accessing Data Cells
- Getting Info About a Data Frame
- Selecting Columns in Data Frames
- Selecting Rows in Data Frames
- Getting a Subset of a Data Frame
- Sorting (ordering) Data in Data Frames by Attribute(s)
- Editing Data Frames
- The str() Function
- Type Conversion (Coercion)
- The summary() Function
- Checking an Object's Type
- Summary

- Extending R
- The Base R Packages
- Loading Packages
- What is the Difference between Package and Library?
- Extending R
- The CRAN Web Site
- Extending R in R GUI
- Extending R in RStudio
- Installing and Removing Packages from Command-Line
- Summary

- Read-Write and Import-Export Operations in R
- Reading Data from a File into a Vector
- Example of Reading Data from a File into A Vector
- Writing Data to a File
- Example of Writing Data to a File
- Reading Data into A Data Frame
- Writing CSV Files
- Importing Data into R
- Exporting Data from R
- Summary

- Statistical Computing Features in R
- Statistical Computing Features
- Descriptive Statistics
- Basic Statistical Functions
- Examples of Using Basic Statistical Functions
- Non-uniformity of a Probability Distribution
- Writing Your Own skew and kurtosis Functions
- Generating Normally Distributed Random Numbers
- Generating Uniformly Distributed Random Numbers
- Using the summary() Function
- Math Functions Used in Data Analysis
- Examples of Using Math Functions
- Correlations
- Correlation Example
- Testing Correlation Coefficient for Significance
- The cor.test() Function
- The cor.test() Example
- Regression Analysis
- Types of Regression
- Simple Linear Regression Model
- Least-Squares Method (LSM)
- LSM Assumptions
- Fitting Linear Regression Models in R
- Example of Using lm()
- Confidence Intervals for Model Parameters
- Example of Using lm() with a Data Frame
- Regression Models in Excel
- Multiple Regression Analysis
- Summary

- Data Manipulation and Transformation in R
- Applying Functions to Matrices and Data Frames
- The apply() Function
- Using apply()
- Using apply() with a User-Defined Function
- apply() Variants
- Using tapply()
- Adding a Column to a Data Frame
- Dropping A Column in a Data Frame
- The attach() and detach() Functions
- Sampling
- Using sample() for Generating Labels
- Set Operations
- Example of Using Set Operations
- The dplyr Package
- Object Masking (Shadowing) Considerations
- Getting More Information on dplyr in RStudio
- The search() or searchpaths() Functions
- Handling Large Data Sets in R with the data.table Package
- The fread() and fwrite() functions from the data.table Package
- Using the Data Table Structure
- Summary

- Data Visualization in R
- Data Visualization
- Data Visualization in R
- The ggplot2 Data Visualization Package
- Creating Bar Plots in R
- Creating Horizontal Bar Plots
- Using barplot() with Matrices
- Using barplot() with Matrices Example
- Customizing Plots
- Histograms in R
- Building Histograms with hist()
- Example of using hist()
- Pie Charts in R
- Examples of using pie()
- Generic X-Y Plotting
- Examples of the plot() function
- Dot Plots in R
- Saving Your Work
- Supported Export Options
- Plots in RStudio
- Saving a Plot as an Image
- Summary

- Using R Efficiently
- Object Memory Allocation Considerations
- Garbage Collection
- Finding Out About Loaded Packages
- Using the conflicts() Function
- Getting Information About the Object Source Package with the pryr Package
- Using the where() Function from the pryr Package
- Timing Your Code
- Timing Your Code with system.time()
- Timing Your Code with System.time()
- Sleeping a Program
- Handling Large Data Sets in R with the data.table Package
- Passing System-Level Parameters to R
- Summary

## Class Materials

Each student will receive a comprehensive set of materials, including course notes and all the class examples.

Experience in the following *is required* for this R Programming class:

- General knowledge of statistics and programming.

Instructor-led courses are offered via a live Web connection, at client sites throughout Europe, and at our Geneva Training Center.