Concatenar dos factores dados en un solo factor en R

Las variables de factor en la programación R se pueden combinar para formar vectores y listas. La concatenación de objetos de tipo factor no es posible como las operaciones de concatenación primitivas, ya que no conservan la clase de variables «factor», lo que puede generar ambigüedad en los datos. 

La clase de cualquier objeto de almacenamiento en la programación R se puede obtener mediante el método sapply(), que devuelve el tipo de datos o el modo al que pertenece un objeto.

Sintaxis: sapply(X, FUN)

Parámetros:
X: Un vector o un objeto
FUN: Función aplicada a cada elemento de x

Método 1: Usar el método unlist()

El método as.factor() se usa para especificar un vector de columna en formato de factor en lugar de ser numérico. Los dos factores de entrada se pueden declarar usando el vector mapeado explícitamente a factores usando este método. 

El método unlist() en lenguaje R se usa para proporcionar la conversión de un objeto de lista a un vector. Simplifica producir un vector conservando todos los componentes, es decir, se conserva la clase de los elementos. 

Sintaxis:

deslistar( x )

donde x es una lista o vector

Este enfoque preserva los datos y sus niveles correspondientes. Los datos se concatenan en el orden en que se especifica en el método list(). 

Ejemplo:

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 factor
combined <- unlist(list(fac1,fac2))
print ("Combined Factor : ")
print (combined)
  
sapply(combined,class)

Producción

[1] “Factor1: “

[1] 1 2 3 4 5

Niveles: 1 2 3 4 5

[1] “factor” “factor” “factor” “factor” “factor”

[1] “Factor2: “

[1] 8 9 10

Niveles: 8 9 10

[1] “factor” “factor” “factor”

[1] “Factor Combinado: “

[1] 1 2 3 4 5 8 9 10

Niveles: 1 2 3 4 5 8 9 10

[1] “factor” “factor” “factor” “factor” “factor” “factor” “factor” “factor”

Los objetos de tipo de factor que pertenecen a diferentes tipos de datos también se pueden fusionar en una lista singular de los elementos de tipo de factor. Los niveles se conservan en esta fusión. 

Ejemplo:

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 factor
combined <- unlist(list(fac1,fac2))
print ("Combined Factor : ")
print (combined)
  
sapply(combined,class)

Producción

[1] “Factor1: “

[1] abc

Niveles: abc

[1] “factor” “factor” “factor”

[1] “Factor2: “

[1] 1 2 3 4

Niveles: 1 2 3 4

[1] “factor” “factor” “factor” “factor”

[1] “Factor Combinado: “

[1] abc 1 2 3 4

Niveles: abc 1 2 3 4

[1] “factor” “factor” “factor” “factor” “factor” “factor” “factor”

Método 2: Usar el método factor()

El métodolevels() del vector de factor específico se puede utilizar para extraer los niveles individuales en forma de strings independientes. Devuelve el número de elementos equivalente a la longitud del vector. 

Sintaxis:

niveles (fac-vec)[fac-vec]

Dado que cada uno de estos niveles se devuelven como strings, pertenecen al mismo tipo de datos. Por lo tanto, ahora se combinan para formar un vector atómico usando el método c(). 

Sintaxis:

c (vec1, vec2)

 donde vec1 y vec2 son vectores que pertenecen al mismo tipo de datos 

Ejemplo:

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 factor1
level1 <- levels(fac1)[fac1]
  
# extracting levels of factor2
level2 <- levels(fac2)[fac2]
  
# combine into one factor
combined <- factor(c( level1,level2 ))
print ("Combined Factor : ")
print (combined)
  
sapply(combined,class)

Producción

[1] “Factor1: “

[1] abc

Niveles: abc

[1] “factor” “factor” “factor”

[1] “Factor2: “

[1] 1 2 3 4

Niveles: 1 2 3 4

[1] “factor” “factor” “factor” “factor”

[1] “Factor Combinado: “

[1] abc 1 2 3 4

Niveles: 1 2 3 4 abc

[1] “factor” “factor” “factor” “factor” “factor” “factor” “factor”

Publicación traducida automáticamente

Artículo escrito por mallikagupta90 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *