# How to Convert Numeric to Factor in R (With Examples)

There are two methods you can use to convert a numeric variable to a factor variable in R:

Method 1: Use as.factor()

```df\$factor_variable <- as.factor(df\$numeric_variable)
```

This will convert the numeric variable to a factor variable with the number of levels equal to the number of unique values in the original numeric variable.

Method 2: Use cut()

```df\$factor_variable <- cut(df\$numeric_variable, 3, labels=c('lab1', 'lab2', 'lab3'))
```

This particular example will convert the numeric variable to a factor variable by “cutting” the numeric variable at 3 equally distanced values.

The following examples show how to use each method in practice with the following data frame in R:

```#create data frame
df <- data.frame(team=c('A', 'A', 'B', 'B', 'C', 'C', 'C', 'D'),
points=c(12, 15, 22, 29, 35, 24, 11, 24))

#view data frame
df

team points
1    A     12
2    A     15
3    B     22
4    B     29
5    C     35
6    C     24
7    C     11
8    D     24

#view structure of data frame
str(df)

'data.frame':	8 obs. of  2 variables:
\$ team  : chr  "A" "A" "B" "B" ...
\$ points: num  12 15 22 29 35 24 11 24```

## Example 1: Convert Numeric to Factor Using as.factor()

The following code shows how to use as.factor() to convert the points column from numeric to factor:

```#convert points column from numeric to factor
df\$points <- as.factor(df\$points)

#view updated data frame
df

team points
1    A     12
2    A     15
3    B     22
4    B     29
5    C     35
6    C     24
7    C     11
8    D     24

#view updated structure of data frame
str(df)

'data.frame':	8 obs. of  2 variables:
\$ team  : chr  "A" "A" "B" "B" ...
\$ points: Factor w/ 7 levels "11","12","15",..: 2 3 4 6 7 5 1 5```

By using the str() function to view the structure of the data frame, we can see that the points column is now a factor with 7 different levels representing the 7 unique numeric values in the column.

## Example 2: Convert Numeric to Factor Using cut()

The following code shows how to use cut() to convert the points column from a numeric variable to a factor variable with 3 levels:

```#convert points column from numeric to factor with three levels
df\$points <- cut(df\$points, 3, labels=c('OK', 'Good', 'Great'))

#view updated data frame
df

team points
1    A     OK
2    A     OK
3    B   Good
4    B  Great
5    C  Great
6    C   Good
7    C     OK
8    D   Good

#view updated structure of data frame
str(df)

'data.frame':	8 obs. of  2 variables:
\$ team  : chr  "A" "A" "B" "B" ...
\$ points: Factor w/ 3 levels "OK","Good","Great": 1 1 2 3 3 2 1 2
```

From the output we can see that the points variable has been converted from a numeric variable to a factor variable with three levels and the following labels:

• “OK”
• “Good”
• “Great”

Note that we chose to use three levels in this example, but feel free to cut the numeric variable into as many levels as you’d like by changing the 3 in the cut() function to another value.