Concatenate two given factor in a single factor in R - GeeksforGeeks

23 May, 2021
The factor variables in R programming can be combined to form vectors and lists. Concatenation of factor type objects is not possible like the primitive concatenation operations, since they do not preserve the “factor” class of variables, which may lead to data ambiguity. 
The class of any storage object in R programming can be fetched using sapply() method, which returns the data type or mode to which an object belongs.
Syntax: sapply(X, FUN)
Parameters:X: A vector or an objectFUN: Function applied to each element of x
as.factor() method is used to specify a column vector in factor format rather than being numeric. The two input factors can be declared using the vector explicitly mapped to factors using this method. 
unlist() method in R language is used to provide conversion from a list object to vector. It simplifies to produce a vector by preserving all components, that is the class of the elements is preserved. 
Syntax:
unlist( x )
where x is a list or vector
This approach preserves the data and its corresponding levels. The data is concatenated in the order in with it is specified in the list() method. 
Example:
R
fac1 <- as.factor(c(1:5))print ("Factor1 : ")print (fac1)sapply(fac1,class)  fac2 <- as.factor(c(8:10))print ("Factor2 : ")print (fac2)sapply(fac2,class)  # combine into one factorcombined <- unlist(list(fac1,fac2))print ("Combined Factor : ")print (combined)  sapply(combined,class)
Output
[1] “Factor1 : “
[1] 1 2 3 4 5
Levels: 1 2 3 4 5
[1] “factor” “factor” “factor” “factor” “factor”
[1] “Factor2 : “
[1] 8  9  10
Levels: 8 9 10
[1] “factor” “factor” “factor”
[1] “Combined Factor : “
[1] 1  2  3  4  5  8  9  10
Levels: 1 2 3 4 5 8 9 10
[1] “factor” “factor” “factor” “factor” “factor” “factor” “factor” “factor”
Factor type objects belonging to different data types can also be merged together in a singular list of the factor type elements. The levels are preserved in this merge. 
Example:
R
fac1 <- as.factor(letters[1:3])print ("Factor1 : ")print (fac1)sapply(fac1,class)  fac2 <- as.factor(c(1:4))print ("Factor2 : ")print (fac2)sapply(fac2,class)  # combine into one factorcombined <- unlist(list(fac1,fac2))print ("Combined Factor : ")print (combined)  sapply(combined,class)
Output
[1] “Factor1 : “
[1] a b c
Levels: a b c
[1] “factor” “factor” “factor”
[1] “Factor2 : “
[1] 1 2 3 4
Levels: 1 2 3 4
[1] “factor” “factor” “factor” “factor”
[1] “Combined Factor : “
[1] a b c 1 2 3 4
Levels: a b c 1 2 3 4
[1] “factor” “factor” “factor” “factor” “factor” “factor” “factor”
The levels() method of the specific factor vector can be used to extract the individual levels in the form of independent strings. It returns the number of elements equivalent to the length of the vector. 
Syntax:
levels (fac-vec)[fac-vec]
Since, these levels are each returned as strings, therefore they belong to the same data type. Hence, they are combined now to form an atomic vector using the c() method. 
Syntax:
c (vec1 , vec2)
 where vec1 and vec2 are vectors belonging to same data type 
Example:
R
fac1 <- factor(letters[1:3])print ("Factor1 : ")print (fac1)sapply(fac1,class)  fac2 <- factor(c(1:4))print ("Factor2 : ")print (fac2)sapply(fac2,class)  # extracting levels of factor1level1 <- levels(fac1)[fac1]  # extracting levels of factor2level2 <- levels(fac2)[fac2]  # combine into one factorcombined <- factor(c( level1,level2 ))print ("Combined Factor : ")print (combined)  sapply(combined,class)
Output
[1] “Factor1 : “
[1] a b c
Levels: a b c
[1] “factor” “factor” “factor”
[1] “Factor2 : “
[1] 1 2 3 4
Levels: 1 2 3 4
[1] “factor” “factor” “factor” “factor”
[1] “Combined Factor : “
[1] a b c 1 2 3 4
Levels: 1 2 3 4 a b c
[1] “factor” “factor” “factor” “factor” “factor” “factor” “factor”
Picked
R Factor-Programs
R-Factors
R Language
R Programs
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Change Color of Bars in Barchart using ggplot2 in R
Group by function in R using Dplyr
How to Change Axis Scales in R Plots?
How to Split Column Into Multiple Columns in R DataFrame?
Replace Specific Characters in String in R
How to Split Column Into Multiple Columns in R DataFrame?
Replace Specific Characters in String in R
How to filter R DataFrame by values in a column?
How to filter R dataframe by multiple conditions?
Convert Matrix to Dataframe in R