Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Acceso a datos mediante matrices categóricas

Seleccionar datos por categoría

La selección de datos basándose en sus valores suele ser útil. Este tipo de selección de datos puede implicar la creación de un vector lógico basado en valores en una variable y, a continuación, utilizar ese vector lógico para seleccionar un subconjunto de valores en otras variables. Puede crear un vector lógico para seleccionar datos mediante la búsqueda de valores en una matriz numérica que se encuentre dentro de un rango determinado. Además, puede crear el vector lógico encontrando valores discretos específicos. Al utilizar matrices categóricas, puede fácilmente:

  • Seleccione elementos de categorías particulares. Para matrices categóricas, utilice los operadores lógicos == o ~= para seleccionar los datos que se encuentran en una categoría determinada o no en ella. Para seleccionar datos en un grupo determinado de categorías, utilice la función ismember.

    Para las matrices categóricas ordinales, utilice las desigualdades >, >=, < o <= para buscar datos en categorías superiores o inferiores a una categoría determinada.

  • Elimine los datos que se encuentran en una categoría determinada. Utilizar operadores lógicos para incluir o excluir datos de categorías particulares.

  • Los arrays categóricos de Buscar elementos que no estén en una categoría definida. indican qué elementos no pertenecen a una categoría definida por <undefined>. Utilice la función isundefined para buscar observaciones sin un valor definido.

Formas comunes de acceder a los datos mediante matrices categóricas

En este ejemplo se muestra cómo indexar y buscar mediante matrices categóricas. Puede acceder a los datos mediante matrices categóricas almacenadas dentro de una tabla de una manera similar.

Cargar datos de muestra

Cargue los datos de muestra recolectados de 100 pacientes.

load patients whos
  Name                            Size            Bytes  Class      Attributes    Age                           100x1               800  double                  Diastolic                     100x1               800  double                  Gender                        100x1             12212  cell                    Height                        100x1               800  double                  LastName                      100x1             12416  cell                    Location                      100x1             15008  cell                    SelfAssessedHealthStatus      100x1             12340  cell                    Smoker                        100x1               100  logical                 Systolic                      100x1               800  double                  Weight                        100x1               800  double                

Crear matrices categóricas a partir de matrices celulares de vectores de caracteres

Gender y Location contienen datos que pertenecen a categorías. Cada matriz de celdas contiene vectores de caracteres tomados de un pequeño conjunto de valores únicos (que indican dos géneros y tres ubicaciones respectivamente). Convierte Gender y Location a matrices categóricas.

Gender = categorical(Gender); Location = categorical(Location);

Buscar miembros de una sola categoría

Para las matrices categóricas, puede utilizar los operadores lógicos == y ~= para encontrar los datos que se encuentran en una categoría determinada o no en ella.

Determine si hay algún paciente observado en el lugar, 'Rampart General Hospital'.

any(Location=='Rampart General Hospital')
ans = logical
   0

No hay pacientes observados en el hospital general de la muralla.

Buscar miembros de un grupo de categorías

Puede utilizar ismember para buscar datos en un determinado grupo de categorías. Crear un vector lógico para los pacientes observados en County General Hospital o VA Hospital.

VA_CountyGenIndex = ...     ismember(Location,{'County General Hospital','VA Hospital'});

VA_CountyGenIndex es un array lógico 100-por-1 que contiene true lógicos (1) para cada elemento de la matriz categórica Location que es miembro de la categoría County General Hospital o VA Hospital. La salida, VA_CountyGenIndex contiene 76 elementos que no son cero.

Utilice el vector lógico, VA_CountyGenIndex para seleccionar el LastName de los pacientes observados en cualquier County General Hospital o VA Hospital.

VA_CountyGenPatients = LastName(VA_CountyGenIndex);

VA_CountyGenPatients es una matriz de células 76-por-1 de vectores de caracteres.

Seleccionar elementos de una categoría determinada para trazar

Utilice la función summary para imprimir un resumen que contenga los nombres de categoría y el número de elementos de cada categoría.

summary(Location)
     County General Hospital        39       St. Mary's Medical Center      24       VA Hospital                    37  

Location es un array categórico de 100 por 1 con tres categorías. County General Hospital ocurre en 39 elementos, St. Mary s Medical Center en 24 elementos, y VA Hospital en 37 elementos.

Utilice la función summary para imprimir un resumen de Gender.

summary(Gender)
     Female      53       Male        47  

Gender es un array categórico de 100 por 1 con dos categorías. Female se produce en 53 elementos y Male se produce en 47 elementos.

Utilice el operador lógico == para acceder a la edad de sólo los pacientes femeninos. A continuación, trace un histograma de estos datos.

figure() histogram(Age(Gender=='Female')) title('Age of Female Patients')

histogram(Age(Gender=='Female')) traza los datos de la edad para los 53 pacientes femeninos.

Eliminar datos de una categoría determinada

Puede utilizar operadores lógicos para incluir o excluir datos de categorías particulares. Elimine todos los pacientes observados en VA Hospital de las variables de espacio de trabajo, Age y Location.

Age = Age(Location~='VA Hospital'); Location = Location(Location~='VA Hospital');

Ahora, Age es un array numérico 63-por-1, y Location es un array categórico 63-por-1.

Enumere las categorías de Location, así como el número de elementos en cada categoría.

summary(Location)
     County General Hospital        39       St. Mary's Medical Center      24       VA Hospital                     0  

Los pacientes observados en VA Hospital se eliminan de Location, pero VA Hospital sigue siendo una categoría.

Utilice la función removecats para quitar VA Hospital de las categorías de Location.

Location = removecats(Location,'VA Hospital');

Compruebe que la categoría, VA Hospital, se eliminó.

categories(Location)
ans = 2x1 cell array
    {'County General Hospital'  }
    {'St. Mary's Medical Center'}

Location es un array categórico de 63 por 1 que tiene dos categorías.

Elemento Delete

Puede eliminar elementos mediante la indización. Por ejemplo, puede quitar el primer elemento de Location seleccionando el resto de los elementos con Location(2:end). Sin embargo, una manera más fácil de eliminar elementos es usar [].

Location(1) = []; summary(Location)
     County General Hospital        38       St. Mary's Medical Center      24  

Location es un array categórico de 62 por 1 que tiene dos categorías. La eliminación del primer elemento no afecta a otros elementos de la misma categoría y no elimina la propia categoría.

Comprobar datos no definidos

Elimine la categoría County General Hospital de Location.

Location = removecats(Location,'County General Hospital');

Mostrar los primeros ocho elementos de la matriz categórica, Location.

Location(1:8)
ans = 8x1 categorical array
     St. Mary's Medical Center 
     <undefined> 
     St. Mary's Medical Center 
     St. Mary's Medical Center 
     <undefined> 
     <undefined> 
     St. Mary's Medical Center 
     St. Mary's Medical Center 

Después de quitar la categoría, County General Hospital, los elementos que anteriormente pertenecían a esa categoría ya no pertenecen a ninguna categoría definida para Location. Los arrays categóricos denotan estos elementos como undefined.

Utilice la función isundefined para encontrar observaciones que no pertenezcan a ninguna categoría.

undefinedIndex = isundefined(Location);

undefinedIndex es un array categórico 62-por-1 que contiene true lógicos (1) para todos los elementos indefinidos en Location.

Definir elementos no definidos

Utilice la función summary para imprimir el número de elementos no definidos en Location.

summary(Location)
     St. Mary's Medical Center      24       <undefined>                    38  

El primer elemento de Location pertenece a la categoría, St. Mary's Medical Center. Defina el primer elemento que se undefined para que ya no pertenezca a ninguna categoría.

Location(1) = '<undefined>'; summary(Location)
     St. Mary's Medical Center      23       <undefined>                    39  

Puede hacer que los elementos seleccionados se undefined sin quitar una categoría o cambiar las categorías de otros elementos. Defina los elementos que se undefined para indicar elementos con valores desconocidos.

Preasignar matrices categóricas con elementos no definidos

Puede utilizar elementos no definidos para preasignar el tamaño de una matriz categórica para un mejor rendimiento. Cree una matriz categórica que sólo tenga elementos con ubicaciones conocidas.

definedIndex = ~isundefined(Location); newLocation = Location(definedIndex); summary(newLocation)
     St. Mary's Medical Center      23  

Amplíe el tamaño de newLocation de modo que sea un arreglo categórico 200-por-1. Defina el último elemento nuevo que se undefined. Todos los otros elementos nuevos también se establecen para ser undefined. Los 23 elementos originales guardan los valores que tenían.

newLocation(200) = '<undefined>'; summary(newLocation)
     St. Mary's Medical Center       23       <undefined>                    177  

newLocation tiene espacio para los valores que planea almacenar en la matriz más tarde.

Consulte también

| | | | | |

Ejemplos relacionados

Más acerca de