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 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 #  "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 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 #  "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 continuous numerical ranges into discrete categories defined by intervals. 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.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 #  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:
Please accept YouTube cookies to play this video. By accepting you will be accessing content from YouTube, a service provided by an external third party.
If you accept this notice, your choice will be saved and the page will refresh.
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.
Statistics Globe Newsletter