# How to sort a numerical factor column in an R data frame?

To sort a numerical factor column in an R data frame, we would need to column with as.character then as.numeric function and then order function will be used.

For Example, if we have a data frame called df that contains a numerical factor column say F then we can use sort F by using the below mentioned command −

## Output

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

  Class Sales
1 1     4
12 1    27
2 2    13
4 2    39
5 2    23
10 2    20
19 2    14
3 3     2
6 3    37
8 3    16
11 3    50
16 3    43
18 3    35
7 4    33
9 4    17
13 4     6
14 4    19
15 4    48
17 4    31
20 4    45

## Example 2

Following snippet creates a sample data frame −

Group<-factor(sample(1:3,20,replace=TRUE))
Demand<-sample(500:1000,20)
df2<-data.frame(Group,Demand)
df2

The following dataframe is created

  Group Demand
1 1    625
2 3    855
3 3    809
4 2    951
5 2    939
6 2    629
7 2    902
8 1    903
9 3    633
10 1    886
11 1    962
12 2    577
13 1    660
14 3    709
15 1    584
16 3    889
17 1    762
18 3    594
19 2    779
20 2    859

To sort Group column of df2 on the above created data frame, add the following code to the above snippet −

Group<-factor(sample(1:3,20,replace=TRUE))
Demand<-sample(500:1000,20)
df2<-data.frame(Group,Demand)
df2[order(as.numeric(as.character(df2\$Group))),]

## Output

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

  Group Demand
1 1    625
8 1    903
10 1    886
11 1    962
13 1    660
15 1    584
17 1    762
4 2    951
5 2    939
6 2    629
7 2    902
12 2    577
19 2    779
20 2    859
2 3    855
3 3    809
9 3    633
14 3    709
16 3    889
18 3    594

Updated on: 10-Nov-2021

2K+ Views

##### Kickstart Your Career

Get certified by completing the course