Assign Unique ID for Each Group in R (3 Examples)

 

In this R tutorial you’ll learn how to create an ID number by group.

The article will consist of this content:

Here’s how to do it…

 

Creation of Example Data

We’ll use the following data as basement for this R programming tutorial:

data <- data.frame(x1 = rep(letters[1:3],                   # Create example data
                            each = 3),
                   x2 = 11:19)
data                                                        # Print example data

 

table 1 data frame assign unique id for each group r

 

Have a look at the table that got returned by the previous R syntax. It shows that our example data has nine lines and two variables. The variable x1 has the character data type and the variable x2 has the integer class.

 

Example 1: Add Consecutive Group Number to Data Frame Using Base R

In this example, I’ll demonstrate how to group by a variable and then assign an ID based on these groups using the transform function of the basic installation of the R programming language.

Have a look at the following R code:

data_id1 <- transform(data,                                 # Create ID by group
                      ID = as.numeric(factor(x1)))
data_id1                                                    # Print data with group ID

 

table 2 data frame assign unique id for each group r

 

After executing the previous R programming code the data frame with consecutive ID column illustrated in Table 2 has been created.

 

Example 2: Add Consecutive Group Number to Data Frame Using dplyr Package

In this example, I’ll demonstrate how to create a unique ID column by group using the dplyr package.

First, we need to install and load the dplyr package:

install.packages("dplyr")                                   # Install & load dplyr package
library("dplyr")

Next, we can use the group_by and mutate functions of the dplyr package to assign a unique ID number to each group of identical values in a column (i.e. x1):

data_id2 <- data %>%                                        # Create ID by group
  group_by(x1) %>%
  dplyr::mutate(ID = cur_group_id())
data_id2                                                    # Print data with group ID
# # A tibble: 9 x 3
# # Groups:   x1 [3]
#   x1       x2    ID
#   <chr> <int> <int>
# 1 a        11     1
# 2 a        12     1
# 3 a        13     1
# 4 b        14     2
# 5 b        15     2
# 6 b        16     2
# 7 c        17     3
# 8 c        18     3
# 9 c        19     3

By running the previous R programming syntax we have created the tibble shown in the previous RStudio console output.

 

Example 3: Add Consecutive Group Number to Data Frame Using data.table Package

In this example, I’ll demonstrate how to use the data.table package to add a unique ID variable by group.

We first have to install and load the data.table package:

install.packages("data.table")                              # Install data.table package
library("data.table")                                       # Load data.table

Next, we can use the functions of the data.table package to assign an ID number to our data:

data_id3 <- data                                            # Duplicate data
setDT(data_id3)[ , ID := .GRP, by = x1]                     # Create ID by group
data_id3                                                    # Print data with group ID

 

table 3 data frame assign unique id for each group r

 

After executing the previous R code, the data set with ID column shown in Table 3 has been created. Note that this data set has the data.table class.

 

Video, Further Resources & Summary

I have recently published a video on my YouTube channel, which illustrates the contents of this tutorial. You can find the video below:

 

 

Furthermore, you could have a look at the related posts on my homepage. Some tutorials about topics such as counting, groups, extracting data, and numeric values are listed below.

 

Summary: In this R tutorial you have learned how to add a consecutive ID number by group. Don’t hesitate to let me know in the comments, if you have any additional questions.

 

Leave a Reply

Your email address will not be published. Required fields are marked *

Fill out this field
Fill out this field
Please enter a valid email address.

The maximum upload file size: 2 MB. You can upload: image. Drop file here

Top