How to create a group column in an R data frame?



Suppose we have a data frame called df that contains two columns say X and Y then we can create a group column based on X and Y by converting df into a data.table object and creating list of values in X and Y with list function.

Check out the below Examples to understand how it can be done.

Example 1

Following snippet creates a sample data frame −

x1<-rpois(20,2) x2<-rpois(20,2) df1<-data.frame(x1,x2) df1

The following dataframe is created

 x1 x2 1 1 5 2 1 1 3 0 1 4 1 1 5 2 1 6 2 3 7 4 2 8 0 4 9 2 1 10 2 2 11 0 1 12 3 1 13 3 3 14 4 3 15 2 0 16 1 3 17 2 1 18 3 1 19 5 1 20 3 2

To load data.table object and create a group column for values in df1 on the above created data frame, add the following code to the above snippet −

x1<-rpois(20,2) x2<-rpois(20,2) df1<-data.frame(x1,x2) library(data.table) setDT(df1)[,Group:=.GRP,by=list(x1,x2)] df1

Output

If you execute all the above given snippets as a single program, it generates the following Output −

 x1 x2 Group 1: 1 5 1 2: 1 1 2 3: 0 1 3 4:  1  1 2 5:  2  1 4 6:  2  3 5 7:  4  2 6 8:  0  4 7 9:  2  1 4 10: 2 2  8 11: 0 1  3 12: 3 1  9 13: 3 3 10 14: 4 3 11 15: 2 0 12 16: 1 3 13 17: 2 1  4 18: 3 1  9 19: 5 1 14 20: 3 2 15

Example 2

Following snippet creates a sample data frame −

y1<-sample(LETTERS[1:4],20,replace=TRUE) y2<-sample(LETTERS[1:4],20,replace=TRUE) df2<-data.frame(y1,y2) df2

The following dataframe is created

 y1 y2 1 B C 2 B D 3 D C 4 D B 5 A B 6 D A 7 A C 8 A C 9 D B 10 C C 11 A A 12 C D 13 B C 14 C C 15 A A 16 D B 17 B A 18 C B 19 C B 20 C B

To create a group column for values in df2 on the above created data frame, add the following code to the above snippet −

y1<-sample(LETTERS[1:4],20,replace=TRUE) y2<-sample(LETTERS[1:4],20,replace=TRUE) df2<-data.frame(y1,y2) setDT(df2)[,Group:=.GRP,by=list(y1,y2)] df2

Output

If you execute all the above given snippets as a single program, it generates the following Output −

 y1 y2 Group 1: B C 1 2: B D 2 3: D C 3 4: D B 4 5: A B 5 6: D A 6 7: A C 7 8: A C 7 9: D B 4 10: C C 8 11: A A 9 12: C D 10 13: B C 1 14: C C 8 15: A A 9 16: D B 4 17: B A 11 18: C B 12 19: C B 12 20: C B 12
Updated on: 2021-11-05T07:13:42+05:30

991 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements