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.

Crear y trabajar con tablas

En este ejemplo se muestra cómo crear una tabla a partir de variables de espacio de trabajo, trabajar con datos de tabla y escribir tablas en archivos para su uso posterior. es un tipo de datos para recopilar datos heterogéneos y propiedades de metadatos, como nombres de variables, nombres de fila, descripciones y unidades variables, en un solo contenedor.table

Las tablas son adecuadas para datos tabulares o orientados a columnas que a menudo se almacenan como pilares en un archivo de texto o en una hoja de cálculo. Cada variable de una tabla puede tener un tipo de datos diferente, pero debe tener el mismo número de filas. Sin embargo, las variables de una tabla no están restringidas a vectores de columna. Por ejemplo, una variable de tabla puede contener una matriz con varias columnas, siempre y cuando tenga el mismo número de filas que las otras variables de tabla. Un uso típico de una tabla es almacenar datos experimentales, donde las filas representan diferentes observaciones y columnas representan diferentes variables medidas.

Las tablas son contenedores convenientes para recopilar y organizar las variables de datos relacionadas y para ver y resumir los datos. Por ejemplo, puede extraer variables para realizar cálculos y añadir cómodamente los resultados como nuevas variables de tabla. Cuando termine los cálculos, escriba la tabla en un archivo para guardar los resultados.

Crear y ver tabla

Cree una tabla a partir de variables de espacio de trabajo y vista. Alternativamente, utilice la función o para crear una tabla a partir de una hoja de cálculo o un archivo de texto.Import Toolreadtable Al importar datos desde un archivo con estas funciones, cada columna se convierte en una variable de tabla.

Cargue datos de muestra para 100 pacientes del archivo MAT a variables de espacio de trabajo.patients

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                

Rellene una tabla con variables orientadas a columnas que contengan datos del paciente. Puede acceder a las variables de tabla y asignarlas por su nombre. Al asignar una variable de tabla desde una variable de espacio de trabajo, puede asignar un nombre diferente a la variable de tabla.

Cree una tabla y rellenarla con las variables de espacio de trabajo, y.GenderSmokerHeightWeight Visualice las primeras cinco filas.

T = table(Gender,Smoker,Height,Weight); T(1:5,:)
ans=5×4 table
     Gender     Smoker    Height    Weight
    ________    ______    ______    ______

    'Male'      true        71       176  
    'Male'      false       69       163  
    'Female'    false       64       131  
    'Female'    false       67       133  
    'Female'    false       64       119  

Como alternativa, utilice la función para leer los datos del paciente de un archivo delimitado por comas. Lee todas las columnas que están en un archivo.readtablereadtable

Cree una tabla leyendo todas las columnas del archivo,.patients.dat

T2 = readtable('patients.dat'); T2(1:5,:)
ans=5×10 table
     LastName      Gender     Age             Location              Height    Weight    Smoker    Systolic    Diastolic    SelfAssessedHealthStatus
    __________    ________    ___    ___________________________    ______    ______    ______    ________    _________    ________________________

    'Smith'       'Male'      38     'County General Hospital'        71       176        1         124          93              'Excellent'       
    'Johnson'     'Male'      43     'VA Hospital'                    69       163        0         109          77              'Fair'            
    'Williams'    'Female'    38     'St. Mary's Medical Center'      64       131        0         125          83              'Good'            
    'Jones'       'Female'    40     'VA Hospital'                    67       133        0         117          75              'Fair'            
    'Brown'       'Female'    49     'County General Hospital'        64       119        0         122          80              'Good'            

Puede asignar más variables de tabla orientadas a columnas utilizando la notación de puntos,T.varnameDóndeT es la tabla yvarname es el nombre de variable deseado. Crear identificadores que son números aleatorios. A continuación, asígnelos a una variable de tabla y asigne un nombre a la variable de tabla.ID Todas las variables que asigne a una tabla deben tener el mismo número de filas. Visualice las primeras cinco filas de.T

T.ID = randi(1e4,100,1); T(1:5,:)
ans=5×5 table
     Gender     Smoker    Height    Weight     ID 
    ________    ______    ______    ______    ____

    'Male'      true        71       176      8148
    'Male'      false       69       163      9058
    'Female'    false       64       131      1270
    'Female'    false       67       133      9134
    'Female'    false       64       119      6324

Todas las variables que asigne a una tabla deben tener el mismo número de filas.

Vea el tipo de datos, la descripción, las unidades y otras estadísticas descriptivas para cada variable mediante la creación de un resumen de tabla mediante la función.summary

summary(T)
Variables:      Gender: 100x1 cell array of character vectors      Smoker: 100x1 logical          Values:              True        34                False       66         Height: 100x1 double          Values:              Min          60                Median       67                Max          72         Weight: 100x1 double          Values:              Min          111               Median     142.5               Max          202        ID: 100x1 double          Values:              Min          120             Median    5485.5             Max         9706 

Devuelva el tamaño de la tabla.

size(T)
ans = 1×2

   100     5

contiene 100 filas y 5 variables.T

Cree una tabla nueva y más pequeña que contenga las cinco primeras filas y mostrarla.T Puede utilizar la indexación numérica entre paréntesis para especificar filas y variables. Este método es similar a la indexación en matrices numéricas para crear subarrays. es una mesa de 5 por 5.Tnew

Tnew = T(1:5,:)
Tnew=5×5 table
     Gender     Smoker    Height    Weight     ID 
    ________    ______    ______    ______    ____

    'Male'      true        71       176      8148
    'Male'      false       69       163      9058
    'Female'    false       64       131      1270
    'Female'    false       67       133      9134
    'Female'    false       64       119      6324

Cree una tabla más pequeña que contenga todas las filas y las variables de la segunda a la última.Tnew Utilice la palabra clave para indicar la última variable o la última fila de una tabla. es una mesa de 5 por 4.endTnew

Tnew = Tnew(:,2:end)
Tnew=5×4 table
    Smoker    Height    Weight     ID 
    ______    ______    ______    ____

    true        71       176      8148
    false       69       163      9058
    false       64       131      1270
    false       67       133      9134
    false       64       119      6324

Acceso a datos por fila y nombres de variables

Agregue nombres de fila e indexe en la tabla utilizando nombres de fila y variable en lugar de índices numéricos.T Agregue nombres de fila asignando la variable de espacio de trabajo a la propiedad de.LastNameRowNamesT

T.Properties.RowNames = LastName;

Mostrar las primeras cinco filas con nombres de fila.T

T(1:5,:)
ans=5×5 table
                 Gender     Smoker    Height    Weight     ID 
                ________    ______    ______    ______    ____

    Smith       'Male'      true        71       176      8148
    Johnson     'Male'      false       69       163      9058
    Williams    'Female'    false       64       131      1270
    Jones       'Female'    false       67       133      9134
    Brown       'Female'    false       64       119      6324

Devuelve el tamaño de.T El tamaño no cambia porque los nombres de fila y variable no se incluyen al calcular el tamaño de una tabla.

size(T)
ans = 1×2

   100     5

Seleccione todos los datos para los pacientes con los apellidos y.'Smith''Johnson' En este caso, es más sencillo usar los nombres de fila que usar índices numéricos. es una mesa de 2 por 5.Tnew

Tnew = T({'Smith','Johnson'},:)
Tnew=2×5 table
               Gender    Smoker    Height    Weight     ID 
               ______    ______    ______    ______    ____

    Smith      'Male'    true        71       176      8148
    Johnson    'Male'    false       69       163      9058

Seleccione la altura y el peso del paciente nombrado indexando los nombres de las variables. es una mesa de 1 a 2.'Johnson'Tnew

Tnew = T('Johnson',{'Height','Weight'})
Tnew=1×2 table
               Height    Weight
               ______    ______

    Johnson      69       163  

Puede tener acceso a las variables de tabla con la sintaxis de punto, como en o mediante la indización con nombre, como en.T.HeightT(:,'Height')

Calcular y añadir resultado como variable de tabla

Puede acceder al contenido de las variables de tabla y, a continuación, realizar cálculos en ellos utilizando las funciones de MATLAB®. Calcule Body-Mass-Index () en función de los datos de las variables de tabla existentes y agréguelo como una nueva variable.BMI Trazar la relación del estado de un paciente como fumador o no fumador.BMI Agregue lecturas de presión arterial a la mesa y trace la relación de la presión arterial con el IMC.

Calcule utilizando las variables de tabla y.BMIWeightHeight Puede extraer y para el cálculo mientras mantiene convenientemente, y en la tabla con el resto de los datos del paciente.WeightHeightWeightHeightBMI Visualice las primeras cinco filas de.T

T.BMI = (T.Weight*0.453592)./(T.Height*0.0254).^2;  T(1:5,:)
ans=5×6 table
                 Gender     Smoker    Height    Weight     ID      BMI  
                ________    ______    ______    ______    ____    ______

    Smith       'Male'      true        71       176      8148    24.547
    Johnson     'Male'      false       69       163      9058    24.071
    Williams    'Female'    false       64       131      1270    22.486
    Jones       'Female'    false       67       133      9134    20.831
    Brown       'Female'    false       64       119      6324    20.426

Rellene las propiedades de las unidades variables y las descripciones de variables.BMI Puede agregar metadatos a cualquier variable de tabla para describir más los datos contenidos en la variable.

T.Properties.VariableUnits{'BMI'} = 'kg/m^2'; T.Properties.VariableDescriptions{'BMI'} = 'Body Mass Index';

Crear un histograma para explorar si hay una relación entre el tabaquismo y el índice de masa corporal en este grupo de pacientes. Puede indexar con los valores lógicos de la variable de tabla, porque cada fila contiene y valores para el mismo paciente.BMISmokerBMISmoker

tf = (T.Smoker == false); h1 = histogram(T.BMI(tf),'BinMethod','integers'); hold on tf = (T.Smoker == true); h2 = histogram(T.BMI(tf),'BinMethod','integers'); xlabel('BMI (kg/m^2)'); ylabel('Number of Patients'); legend('Nonsmokers','Smokers'); title('BMI Distributions for Smokers and Nonsmokers'); hold off

Añadir lecturas de la presión arterial para los pacientes de las variables del espacio de trabajo y.SystolicDiastolic Cada fila contiene, y valores para el mismo paciente.SystolicDiastolicBMI

T.Systolic = Systolic; T.Diastolic = Diastolic;

Cree un histograma para mostrar si hay una relación entre los valores altos de y.DiastolicBMI

tf = (T.BMI <= 25); h1 = histogram(T.Diastolic(tf),'BinMethod','integers'); hold on tf = (T.BMI > 25); h2 = histogram(T.Diastolic(tf),'BinMethod','integers'); xlabel('Diastolic Reading (mm Hg)'); ylabel('Number of Patients'); legend('BMI <= 25','BMI > 25'); title('Diastolic Readings for Low and High BMI'); hold off

Reordenar variables de tabla y filas para la salida

Para preparar la tabla para la salida, reordene las filas de la tabla por nombre y variables de tabla por posición o nombre. Mostrar la disposición final de la tabla.

Ordene la tabla por nombres de fila para que los pacientes se enumeren en orden alfabético.

T = sortrows(T,'RowNames');  T(1:5,:)
ans=5×8 table
                  Gender     Smoker    Height    Weight     ID      BMI      Systolic    Diastolic
                 ________    ______    ______    ______    ____    ______    ________    _________

    Adams        'Female'    false       66       137      8235    22.112      127          83    
    Alexander    'Male'      true        69       171      1300    25.252      128          99    
    Allen        'Female'    false       63       143      7432    25.331      113          80    
    Anderson     'Female'    false       68       128      1577    19.462      114          77    
    Bailey       'Female'    false       68       130      2239    19.766      113          81    

Cree una variable para mantener las lecturas de la presión arterial en una variable de tabla 100-by-2.BloodPressure

T.BloodPressure = [T.Systolic T.Diastolic];

Eliminar y de la tabla, ya que son redundantes.SystolicDiastolic

T.Systolic = []; T.Diastolic = [];  T(1:5,:)
ans=5×7 table
                  Gender     Smoker    Height    Weight     ID      BMI      BloodPressure
                 ________    ______    ______    ______    ____    ______    _____________

    Adams        'Female'    false       66       137      8235    22.112     127     83  
    Alexander    'Male'      true        69       171      1300    25.252     128     99  
    Allen        'Female'    false       63       143      7432    25.331     113     80  
    Anderson     'Female'    false       68       128      1577    19.462     114     77  
    Bailey       'Female'    false       68       130      2239    19.766     113     81  

Para poner como primera columna, reordene las variables de tabla por posición.ID

T = T(:,[5 1:4 6 7]);  T(1:5,:)
ans=5×7 table
                  ID      Gender     Smoker    Height    Weight     BMI      BloodPressure
                 ____    ________    ______    ______    ______    ______    _____________

    Adams        8235    'Female'    false       66       137      22.112     127     83  
    Alexander    1300    'Male'      true        69       171      25.252     128     99  
    Allen        7432    'Female'    false       63       143      25.331     113     80  
    Anderson     1577    'Female'    false       68       128      19.462     114     77  
    Bailey       2239    'Female'    false       68       130      19.766     113     81  

También puede reordenar las variables de tabla por nombre. Para reordenar las variables de tabla para que sea la última:Gender

  1. Encuentra en la propiedad de la mesa.'Gender'VariableNames

  2. Mover al final de una matriz de celdas de nombres de variables.'Gender'

  3. Utilice la matriz de nombres de celdas para reordenar las variables de tabla.

varnames = T.Properties.VariableNames; others = ~strcmp('Gender',varnames); varnames = [varnames(others) 'Gender']; T = T(:,varnames);

Visualice las primeras cinco filas de la tabla reordenada.

T(1:5,:)
ans=5×7 table
                  ID     Smoker    Height    Weight     BMI      BloodPressure     Gender 
                 ____    ______    ______    ______    ______    _____________    ________

    Adams        8235    false       66       137      22.112     127     83      'Female'
    Alexander    1300    true        69       171      25.252     128     99      'Male'  
    Allen        7432    false       63       143      25.331     113     80      'Female'
    Anderson     1577    false       68       128      19.462     114     77      'Female'
    Bailey       2239    false       68       130      19.766     113     81      'Female'

Escriba tabla en archivo

Puede escribir toda la tabla en un archivo o crear una subtabla para escribir una parte seleccionada de la tabla original en un archivo independiente.

Escribir en un archivo con la función.Twritetable

writetable(T,'allPatientsBMI.txt');

Puede utilizar la función para leer los datos en una tabla nueva.readtableallPatientsBMI.txt

Cree una subtabla y escriba la subtabla en un archivo independiente. Elimine las filas que contengan datos sobre los pacientes fumadores. A continuación, quite la variable. contiene datos sólo para los pacientes que no son fumadores.Smokernonsmokers

nonsmokers = T; toDelete = (nonsmokers.Smoker == true); nonsmokers(toDelete,:) = []; nonsmokers.Smoker = [];

Escribir en un archivo.nonsmokers

writetable(nonsmokers,'nonsmokersBMI.txt');

Consulte también

| | | | | | | |

Ejemplos relacionados

Más acerca de