VOOZH about

URL: https://www.geeksforgeeks.org/r-machine-learning/catools-package-in-r/

⇱ caTools Package in R - GeeksforGeeks


  • Courses
  • Tutorials
  • Interview Prep

caTools Package in R

Last Updated : 4 Jul, 2025

The caTools package in R Programming Language is a widely used package that provides a collection of tools for data analysis including functions for splitting data, running moving averages and performing various mathematical and statistical operations.

Key features of caTools

The caTools package offers a range of functions designed to simplify data manipulation and analysis.

  1. Data Splitting: Splitting data into training and testing sets.
  2. Moving Averages and Filters: Applying moving averages and other filters to time series data.
  3. Basic Statistical Functions: Calculating correlations, running sums and other statistical measures.

Installing and Loading caTools

To use the caTools package, we need to install it from CRAN and load it into our R session.

  • install.packages(): installs the package.
  • library(): loads the package for use in the current R session.

install.packages("caTools")

library(caTools)

Key Functions in caTools

The caTools package in R provides a variety of tools for data manipulation, analysis and visualization. Here are some of the key functions in the caTools package and their uses.

1. Data Splitting

One of the most common uses of caTools is splitting data into training and testing sets using the sample.split function. This ensures that data is divided randomly while preserving the class distribution. We can use the following code to split the iris dataset into training (70%) and testing (30%) sets.

  • set.seed(123): Ensures the random operations are reproducible.
  • sample.split(iris$Species, SplitRatio = 0.7): Splits the dataset based on the Species column, keeping 70% of the data in the training set.
  • subset(iris, split == TRUE): Selects the rows that are assigned to the training set.
  • subset(iris, split == FALSE): Selects the rows that are assigned to the testing set.
  • dim(): Shows the dimensions (number of rows and columns) of the training and testing sets.

Output:

[1] 105 5
[1] 45 5

In this example, sample.split uses a specified split ratio to divide the dataset, ensuring that the class distribution is preserved in both subsets.

2. Moving Averages and Filters

Functions like runmean, runmax and runmin allow us to calculate moving averages and filters for time series data. These functions apply a rolling calculation over a specified window. For example, to calculate the running mean for a numeric vector.

  • data: A numeric vector representing the data we want to analyze.
  • runmean(data, k = 3): Calculates the running mean with a window size of 3.
  • k = 3: Defines the window size for the moving average.

Output:

[1] 1.5 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 9.5

In this example, runmean computes the running mean with a specified window size k.

3. Data Splitting for Machine Learning

Data splitting is essential for evaluating machine learning models. Here’s how we can split the mtcars dataset into training (80%) and testing (20%) sets.

  • data(mtcars): Loads the mtcars dataset.
  • set.seed(456): Ensures reproducibility by setting a seed for random operations.
  • sample.split(mtcars$mpg, SplitRatio = 0.8): Splits the dataset based on the mpg column, with 80% assigned to the training set.
  • subset(mtcars, split == TRUE): Filters the mtcars dataset for the training set.
  • subset(mtcars, split == FALSE): Filters the mtcars dataset for the testing set.
  • dim(): Shows the number of rows and columns in the training and testing sets.

Output:

[1] 25 11
[1] 7 11

4. Calculate the Moving Maximum

We can calculate the moving maximum of a numeric vector using runmax. This function helps in finding the maximum value in a rolling window over a sequence of data points.

  • data: The numeric vector for which we are calculating the moving maximum.
  • runmax(data, k = 3): Calculates the moving maximum with a window size of 3.
  • k = 3: Defines the window size for the moving maximum.

Output:

[1] 5 5 8 8 10 10 10 6

The output shows the maximum values in a rolling window of size 3 over the input data where each value is the highest in the current and previous two elements.

Comment

Explore