# Create Categories Based On Integer & Numeric Range in R (2 Examples)

In this tutorial you’ll learn how to **construct categorical variables based on integers and numeric ranges** in R programming.

The tutorial contains this information:

Let’s dig in!

## Example 1: Convert Integer into Categorical Data

Example 1 illustrates how to create a categorical vector using an integer (e.g. a person’s age in years) as input data.

Consider the following integer vector in R:

num1 <- c(1, 4, 3, 7, 1, 4, 3, 3, 7) # Create numeric example data num1 # Print numeric example data # [1] 1 4 3 7 1 4 3 3 7 |

num1 <- c(1, 4, 3, 7, 1, 4, 3, 3, 7) # Create numeric example data num1 # Print numeric example data # [1] 1 4 3 7 1 4 3 3 7

As you can see in the RStudio console, our example vector contains some random integer values.

Let’s check the class of our data:

class(num1) # Class of data # [1] "numeric" |

class(num1) # Class of data # [1] "numeric"

The data type of our input data is numeric (the same R code could be applied to the integer class).

Now, we can convert this numeric vector to the factor class (i.e. categorical data) using the as.factor function:

cat1 <- as.factor(num1) # Convert numeric to factor cat1 # Print categorical data # [1] 1 4 3 7 1 4 3 3 7 # Levels: 1 3 4 7 |

cat1 <- as.factor(num1) # Convert numeric to factor cat1 # Print categorical data # [1] 1 4 3 7 1 4 3 3 7 # Levels: 1 3 4 7

Have a look at the previous output of the RStudio console: The values are the same, but the data has been grouped into factor levels.

We can also check the class of our final data object using the class function:

class(cat1) # Class of data # [1] "factor" |

class(cat1) # Class of data # [1] "factor"

It’s a factor!

In this example we have used the actual integer values as categories. However, it is also possible to group a numeric vector into categorical ranges.

You guessed it… That’s what I’m going to show next.

## Example 2: Convert Numerical Ranges into Categorical Data

Example 2 illustrates how to convert numerical ranges into categories. Let’s first create some random example data in R:

set.seed(6042397) # Set random seed num2 <- rnorm(100) # Create numeric example data head(num2) # Head of numeric example data # [1] 1.2645445 -0.4518619 -0.4574372 0.7558008 -0.4175519 -1.1232298 |

set.seed(6042397) # Set random seed num2 <- rnorm(100) # Create numeric example data head(num2) # Head of numeric example data # [1] 1.2645445 -0.4518619 -0.4574372 0.7558008 -0.4175519 -1.1232298

The previous output shows the first six values of our example vector. As you can see, we have created a vector consisting of random numeric values.

We can now convert this vector into categorical ranges:

cat2 <- numeric() # Create empty data object cat2[num2 < - 1] <- 1 # Assign categories based on numeric range cat2[num2 >= - 1 & num2 < 0] <- 2 cat2[num2 >= 0 & num2 < 1] <- 3 cat2[num2 >= 1] <- 4 cat2 <- as.factor(cat2) # Convert numeric to factor head(cat2) # Head of categorical data # [1] 4 2 2 3 2 1 # Levels: 1 2 3 4 |

cat2 <- numeric() # Create empty data object cat2[num2 < - 1] <- 1 # Assign categories based on numeric range cat2[num2 >= - 1 & num2 < 0] <- 2 cat2[num2 >= 0 & num2 < 1] <- 3 cat2[num2 >= 1] <- 4 cat2 <- as.factor(cat2) # Convert numeric to factor head(cat2) # Head of categorical data # [1] 4 2 2 3 2 1 # Levels: 1 2 3 4

The previous output shows our final result: A categorical factor vector with four different categories (i.e. 1, 2, 3, and 4).

## Video, Further Resources & Summary

I have recently released a video on my YouTube channel, which shows the content of this article. You can find the video below:

*The YouTube video will be added soon.*

In addition, you might want to have a look at some of the other articles of Statistics Globe.

- Split Vector into Chunks
- Count Observations by Factor Level
- Convert Data Frame Column to Numeric in R
- All R Programming Tutorials

In summary: In this R tutorial you have learned how to **convert numeric and integer data to categorical**. Let me know in the comments, if you have any additional questions.

**5**/

**5**(

**1**vote )

### Subscribe to my free statistics newsletter: