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