0% found this document useful (0 votes)
19 views12 pages

R Factors

Uploaded by

Arjun Kumar
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
19 views12 pages

R Factors

Uploaded by

Arjun Kumar
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 12


Home Python Java JavaScript HTML SQL PHP C#

← prev next →

R factors

The factor is a data structure which is used for fields which take only predefined finite
number of values. These are the variable which takes a limited number of different values.
These are the data objects which are used to categorize the data and to store it on multiple
levels. It can store both integers and strings values, and are useful in the column that has a
limited number of unique values.
Factors have labels which are associated with the unique integers stored in it. It contains
predefined set value known as levels and by default R always sorts levels in alphabetical
order.

ADVERTISEMENT

Attributes of a factor
There are the following attributes of a factor in R
1. X
It is the input vector which is to be transformed into a factor.
2. levels
It is an input vector that represents a set of unique values which are taken by x.
3. labels
It is a character vector which corresponds to the number of labels.
4. Exclude
It is used to specify the value which we want to be excluded,
5. ordered
It is a logical attribute which determines if the levels are ordered.
6. nmax
It is used to specify the upper bound for the maximum number of level.
ADVERTISEMENT
How to create a factor?
In R, it is quite simple to create a factor. A factor is created in two steps

1. In the first step, we create a vector.


2. Next step is to convert the vector into a factor,

R provides factor() function to convert the vector into factor. There is the following syntax of
factor() function

factor_data<- factor(vector)

Let's see an example to understand how factor function is used.

Example
# Creating a vector as input.
data <- c("Shubham","Nishka","Arpita","Nishka","Shubham","Sumit","Nishka","Shubha
m","Sumit","Arpita","Sumit")

print(data)
print(is.factor(data))

# Applying the factor function.


factor_data<- factor(data)

print(factor_data)
print(is.factor(factor_data))

Output

[1] "Shubham" "Nishka" "Arpita" "Nishka" "Shubham" "Sumit" "Nishka"


[8] "Shubham" "Sumit" "Arpita" "Sumit"
[1] FALSE
[1] Shubham Nishka Arpita Nishka Shubham Sumit Nishka Shubham Sumit
[10] Arpita Sumit
Levels: Arpita Nishka Shubham Sumit
[1] TRUE
Accessing components of factor

Like vectors, we can access the components of factors. The process of accessing
components of factor is much more similar to the vectors. We can access the element with
the help of the indexing method or using logical vectors. Let's see an example in which we
understand the different-different ways of accessing the components.

Example

# Creating a vector as input.


data <- c("Shubham","Nishka","Arpita","Nishka","Shubham","Sumit","Nishka","Shubha
m","Sumit","Arpita","Sumit")

# Applying the factor function.


factor_data<- factor(data)
#Printing all elements of factor
print(factor_data)

#Accessing 4th element of factor


print(factor_data[4])

#Accessing 5th and 7th element


print(factor_data[c(5,7)])

#Accessing all elemcent except 4th one


print(factor_data[-4])

#Accessing elements using logical vector


print(factor_data[c(TRUE,FALSE,FALSE,FALSE,TRUE,TRUE,TRUE,FALSE,FALSE,FALS
E,TRUE)])

Output

[1] Shubham Nishka Arpita Nishka Shubham Sumit Nishka Shubham Sumit
[10] Arpita Sumit
Levels: Arpita Nishka Shubham Sumit

[1] Nishka
Levels: Arpita Nishka Shubham Sumit
[1] Shubham Nishka
Levels: Arpita Nishka Shubham Sumit

[1] Shubham Nishka Arpita Shubham Sumit Nishka Shubham Sumit Arpita
[10] Sumit
Levels: Arpita Nishka Shubham Sumit

[1] Shubham Shubham Sumit Nishka Sumit


Levels: Arpita Nishka Shubham Sumit

Modification of factor

Like data frames, R allows us to modify the factor. We can modify the value of a factor by
simply re-assigning it. In R, we cannot choose values outside of its predefined levels means
we cannot insert value if it's level is not present on it. For this purpose, we have to create a
level of that value, and then we can add it to our factor.

Let's see an example to understand how the modification is done in factors.


Example

# Creating a vector as input.


data <- c("Shubham","Nishka","Arpita","Nishka","Shubham")

# Applying the factor function.


factor_data<- factor(data)

#Printing all elements of factor


print(factor_data)

#Change 4th element of factor with sumit


factor_data[4] <-"Arpita"
print(factor_data)

#change 4th element of factor with "Gunjan"


factor_data[4] <- "Gunjan" # cannot assign values outside levels
print(factor_data)

#Adding the value to the level


levels(factor_data) <- c(levels(factor_data),"Gunjan")#Adding new level
factor_data[4] <- "Gunjan"
print(factor_data)

Output

[1] Shubham Nishka Arpita Nishka Shubham


Levels: Arpita Nishka Shubham
[1] Shubham Nishka Arpita Arpita Shubham
Levels: Arpita Nishka Shubham
Warning message:
In `[<-.factor`(`*tmp*`, 4, value = "Gunjan") :
invalid factor level, NA generated
[1] Shubham Nishka Arpita Shubham
Levels: Arpita Nishka Shubham
[1] Shubham Nishka Arpita Gunjan Shubham
Levels: Arpita Nishka Shubham Gunjan

Factor in Data Frame


When we create a frame with a column of text data, R treats this text column as categorical
data and creates factor on it.

Example

# Creating the vectors for data frame.


height <- c(132,162,152,166,139,147,122)
weight <- c(40,49,48,40,67,52,53)
gender <- c("male","male","female","female","male","female","male")

# Creating the data frame.


input_data<- data.frame(height,weight,gender)
print(input_data)

# Testing if the gender column is a factor.


print(is.factor(input_data$gender))

# Printing the gender column to see the levels.


print(input_data$gender)

Output

height weight gender


1 132 40 male
2 162 49 male
3 152 48 female
4 166 40 female
5 139 67 male
6 147 52 female
7 122 53 male
[1] TRUE
[1] male male female female male female male
Levels: female male

Changing order of the levels


In R, we can change the order of the levels in the factor with the help of the factor function.

Example

data <- c("Nishka","Gunjan","Shubham","Arpita","Arpita","Sumit","Gunjan","Shubham"


)
# Creating the factors
factor_data<- factor(data)
print(factor_data)

# Apply the factor function with the required order of the level.
new_order_factor<- factor(factor_data,levels = c("Gunjan","Nishka","Arpita","Shubha
m","Sumit"))
print(new_order_factor)

Output

[1] Nishka Gunjan Shubham Arpita Arpita Sumit Gunjan Shubham


Levels: Arpita Gunjan Nishka Shubham Sumit
[1] Nishka Gunjan Shubham Arpita Arpita Sumit Gunjan Shubham
Levels: Gunjan Nishka Arpita Shubham Sumit

Generating Factor Levels


R provides gl() function to generate factor levels. This function takes three arguments i.e., n,
k, and labels. Here, n and k are the integers which indicate how many levels we want and
how many times each level is required.
There is the following syntax of gl() function which is as follows

gl(n, k, labels)

1. n indicates the number of levels.


2. k indicates the number of replications.
3. labels is a vector of labels for the resulting factor levels.

Example

gen_factor<- gl(3,5,labels=c("BCA","MCA","B.Tech"))
gen_factor

Output

[1] BCA BCA BCA BCA BCA MCA MCA MCA MCA MCA
[11] B.Tech B.Tech B.Tech B.Tech B.Tech
Levels: BCA MCA B.Tech

Next Topic Data Reshaping in R

← prev next →

Learn Important Tutorial

Python Java

You might also like