Crear tablas y asignarles datos
Las tablas son adecuadas para datos orientados a columnas, como datos tabulares de archivos de texto u hojas de cálculo. Las tablas almacenan columnas de datos en variables. Las variables de una tabla pueden contener distintos tipos de datos, pero todas las variables deben tener el mismo número de filas. Sin embargo, las variables de tabla no están limitadas a almacenar solo vectores 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.
En MATLAB®, puede crear tablas y asignarles datos de varias formas.
Cree una tabla a partir de arreglos de entrada con la función
table
.Añada variables a una tabla existente usando notación de puntos.
Asigne variables a una tabla vacía.
Preasigne una tabla y rellene sus datos después.
Convierta las variables en tablas usando las funciones
array2table
,cell2table
ostruct2table
.Lea una tabla desde un archivo usando la función
readtable
.Importe una tabla con la herramienta de importación.
Su elección dependerá de la naturaleza de sus datos y de cómo planea usar las tablas en su código.
Crear tablas a partir de arreglos de entrada
Puede crear una tabla desde arreglos con la función table
. Por ejemplo, cree una tabla pequeña con datos de cinco pacientes.
Primero, cree seis arreglos de datos orientados a columnas. Estos arreglos tienen cinco filas porque hay cinco pacientes. (La mayoría de estos arreglos son vectores columna de 5 por 1, mientras que BloodPressure
es una matriz de 5 por 2).
LastName = ["Sanchez";"Johnson";"Zhang";"Diaz";"Brown"]; Age = [38;43;38;40;49]; Smoker = [true;false;true;false;true]; Height = [71;69;64;67;64]; Weight = [176;163;131;133;119]; BloodPressure = [124 93; 109 77; 125 83; 117 75; 122 80];
Ahora cree la tabla patients
como un contenedor de los datos. En esta llamada a la función table
, los argumentos de entrada usan los nombres de las variables del área de trabajo para los nombres de las variables de patients
.
patients = table(LastName,Age,Smoker,Height,Weight,BloodPressure)
patients=5×6 table
LastName Age Smoker Height Weight BloodPressure
_________ ___ ______ ______ ______ _____________
"Sanchez" 38 true 71 176 124 93
"Johnson" 43 false 69 163 109 77
"Zhang" 38 true 64 131 125 83
"Diaz" 40 false 67 133 117 75
"Brown" 49 true 64 119 122 80
La tabla es de 5 por 6 porque tiene seis variables. Como se muestra en la variable BloodPressure
, una variable de tabla en sí puede tener varias columnas. Este ejemplo muestra por qué las tablas tienen filas y variables, no filas y columnas.
Añadir variables a una tabla usando notación de puntos
Cuando haya creado una tabla, puede añadir una nueva variable en cualquier momento usando la notación de puntos. La notación de puntos se refiere a las variables de tabla por nombre, T.varname
, donde T
es la tabla y varname
el nombre de la variable. Esta notación es similar a la que usa para acceder y asignar datos a los campos de una estructura.
Por ejemplo, agregue la variable BMI
a patients
. Calcule el índice de masa corporal o BMI con los valores de patients.Weight
y patients.Height
. Asigne los valores de BMI a una nueva variable de tabla.
patients.BMI = (patients.Weight*0.453592)./(patients.Height*0.0254).^2
patients=5×7 table
LastName Age Smoker Height Weight BloodPressure BMI
_________ ___ ______ ______ ______ _____________ ______
"Sanchez" 38 true 71 176 124 93 24.547
"Johnson" 43 false 69 163 109 77 24.071
"Zhang" 38 true 64 131 125 83 22.486
"Diaz" 40 false 67 133 117 75 20.831
"Brown" 49 true 64 119 122 80 20.426
Asignar variables a una tabla vacía
Otra forma de crear una tabla es empezar con una tabla vacía y asignarle variables. Por ejemplo, vuelva a crear la tabla de datos de pacientes, pero esta vez asigne variables usando notación de puntos.
Primero, cree una tabla vacía, patients2
, llamando a table
sin argumentos.
patients2 = table
patients2 = 0x0 empty table
A continuación, cree una copia de los datos de los pacientes asignando variables. Los nombres de las variables de tabla no tienen que coincidir con los del arreglo, tal y como se muestra en las variables de tabla Name
y BP
.
patients2.Name = LastName; patients2.Age = Age; patients2.Smoker = Smoker; patients2.Height = Height; patients2.Weight = Weight; patients2.BP = BloodPressure
patients2=5×6 table
Name Age Smoker Height Weight BP
_________ ___ ______ ______ ______ __________
"Sanchez" 38 true 71 176 124 93
"Johnson" 43 false 69 163 109 77
"Zhang" 38 true 64 131 125 83
"Diaz" 40 false 67 133 117 75
"Brown" 49 true 64 119 122 80
Preasignar una tabla y rellenar filas
Habrá ocasiones en las que conozca los tamaños y los tipos de datos que desea almacenar en la tabla, pero tiene planeado asignar los datos después. Quizá tenga planeado añadir solo unas pocas filas. En ese caso, quizá sea más eficiente preasignar espacio en la tabla y, luego, asignar valores a las filas vacías.
Por ejemplo, para preasignar espacio en una tabla que vaya a contener lecturas de tiempo y temperatura en distintas estaciones, utilice la función table
. En lugar de proporcionar arreglos de entrada, especifique los tamaños y los tipos de datos de las variables de tabla. Para nombrarlos, especifique el argumento 'VariableNames'
. La preasignación rellena las variables de tabla con valores predeterminados apropiados para los tipos de datos.
sz = [4 3]; varTypes = ["double","datetime","string"]; varNames = ["Temperature","Time","Station"]; temps = table('Size',sz,'VariableTypes',varTypes,'VariableNames',varNames)
temps=4×3 table
Temperature Time Station
___________ ____ _________
0 NaT <missing>
0 NaT <missing>
0 NaT <missing>
0 NaT <missing>
Una forma de asignar o añadir una fila a una tabla es asignar un arreglo de celdas a una fila. Si el arreglo de celdas es un vector fila y sus elementos coinciden con los tipos de datos de sus respectivas variables, la asignación convierte el arreglo de celdas en una fila de la tabla. No obstante, puede asignar solo una fila cada vez usando arreglos de celdas. Asigne valores a las dos primeras filas.
temps(1,:) = {75,datetime('now'),"S1"}; temps(2,:) = {68,datetime('now')+1,"S2"}
temps=4×3 table
Temperature Time Station
___________ ____________________ _________
75 19-Aug-2023 14:31:33 "S1"
68 20-Aug-2023 14:31:33 "S2"
0 NaT <missing>
0 NaT <missing>
Como alternativa, puede asignar filas de una tabla más pequeña a una más grande. Con este método, puede asignar una o más filas a la vez.
temps(3:4,:) = table([63;72],[datetime('now')+2;datetime('now')+3],["S3";"S4"])
temps=4×3 table
Temperature Time Station
___________ ____________________ _______
75 19-Aug-2023 14:31:33 "S1"
68 20-Aug-2023 14:31:33 "S2"
63 21-Aug-2023 14:31:33 "S3"
72 22-Aug-2023 14:31:33 "S4"
Puede usar cualquier sintaxis para aumentar el tamaño de la tabla asignando filas después del final de la tabla. Si es necesario, las filas que faltan se rellenan con valores predeterminados.
temps(6,:) = {62,datetime('now')+6,"S6"}
temps=6×3 table
Temperature Time Station
___________ ____________________ _________
75 19-Aug-2023 14:31:33 "S1"
68 20-Aug-2023 14:31:33 "S2"
63 21-Aug-2023 14:31:33 "S3"
72 22-Aug-2023 14:31:33 "S4"
0 NaT <missing>
62 25-Aug-2023 14:31:33 "S6"
Convertir variables en tablas
Puede convertir variables que tengan otros tipos de datos a tablas. Los arreglos de celdas y las estructuras son otros tipos de contenedores que pueden almacenar arreglos con distintos tipos de datos. Esto le permite convertir arreglos de celdas y estructuras a tablas. También puede convertir un arreglo a una tabla en la que las variables de tabla contengan columnas de valores del arreglo. Para convertir estos tipos de variables, utilice las funciones array2table
, cell2table
o struct2table
.
Por ejemplo, convierta un arreglo a una tabla con array2table
. Los arreglos no tienen nombres de columna, por lo que la tabla tiene nombres predeterminados para las variables.
A = randi(3,3)
A = 3×3
3 3 1
3 2 2
1 1 3
a2t = array2table(A)
a2t=3×3 table
A1 A2 A3
__ __ __
3 3 1
3 2 2
1 1 3
Puede introducir sus propios nombres de las variables de tabla con el argumento nombre-valor "VariableNames"
.
a2t = array2table(A,"VariableNames",["First","Second","Third"])
a2t=3×3 table
First Second Third
_____ ______ _____
3 3 1
3 2 2
1 1 3
Leer una tabla desde un archivo
Es habitual tener una gran cantidad de datos tabulares en archivos como CSV (valor separado por comas) o en hojas de cálculo de Excel®. Para leer esos datos en una tabla, use la función readtable
.
Por ejemplo, el archivo CSV outages.csv
es un archivo de muestra distribuido con MATLAB. El archivo contiene datos de un conjunto de cortes de suministro eléctrico. La primera línea de outages.csv
tiene nombres de columnas. El resto del archivo tiene valores de datos separados por comas para cada corte. Las primeras líneas se muestran aquí.
Region,OutageTime,Loss,Customers,RestorationTime,Cause SouthWest,2002-02-01 12:18,458.9772218,1820159.482,2002-02-07 16:50,winter storm SouthEast,2003-01-23 00:49,530.1399497,212035.3001,,winter storm SouthEast,2003-02-07 21:15,289.4035493,142938.6282,2003-02-17 08:14,winter storm West,2004-04-06 05:44,434.8053524,340371.0338,2004-04-06 06:10,equipment fault MidWest,2002-03-16 06:18,186.4367788,212754.055,2002-03-18 23:23,severe storm ...
Para leer outages.csv
y almacenar los datos en una tabla, puede usar readtable
. Lee valores numéricos, fechas y horas y cadenas en variables de tabla que tengan los tipos de datos adecuados. Aquí, Loss
y Customers
son arreglos numéricos. Las variables OutageTime
y RestorationTime
son arreglos de datetime
porque readtable
reconoce los formatos de fecha y hora del texto de esas columnas del archivo de entrada. Para leer el resto de los datos del texto en arreglos de cadenas, especifique el argumento nombre-valor "TextType"
.
outages = readtable("outages.csv","TextType","string")
outages=1468×6 table
Region OutageTime Loss Customers RestorationTime Cause
___________ ____________________ ______ __________ ____________________ _________________
"SouthWest" 01-Feb-2002 12:18:00 458.98 1.8202e+06 07-Feb-2002 16:50:00 "winter storm"
"SouthEast" 23-Jan-2003 00:49:00 530.14 2.1204e+05 NaT "winter storm"
"SouthEast" 07-Feb-2003 21:15:00 289.4 1.4294e+05 17-Feb-2003 08:14:00 "winter storm"
"West" 06-Apr-2004 05:44:00 434.81 3.4037e+05 06-Apr-2004 06:10:00 "equipment fault"
"MidWest" 16-Mar-2002 06:18:00 186.44 2.1275e+05 18-Mar-2002 23:23:00 "severe storm"
"West" 18-Jun-2003 02:49:00 0 0 18-Jun-2003 10:54:00 "attack"
"West" 20-Jun-2004 14:39:00 231.29 NaN 20-Jun-2004 19:16:00 "equipment fault"
"West" 06-Jun-2002 19:28:00 311.86 NaN 07-Jun-2002 00:51:00 "equipment fault"
"NorthEast" 16-Jul-2003 16:23:00 239.93 49434 17-Jul-2003 01:12:00 "fire"
"MidWest" 27-Sep-2004 11:09:00 286.72 66104 27-Sep-2004 16:37:00 "equipment fault"
"SouthEast" 05-Sep-2004 17:48:00 73.387 36073 05-Sep-2004 20:46:00 "equipment fault"
"West" 21-May-2004 21:45:00 159.99 NaN 22-May-2004 04:23:00 "equipment fault"
"SouthEast" 01-Sep-2002 18:22:00 95.917 36759 01-Sep-2002 19:12:00 "severe storm"
"SouthEast" 27-Sep-2003 07:32:00 NaN 3.5517e+05 04-Oct-2003 07:02:00 "severe storm"
"West" 12-Nov-2003 06:12:00 254.09 9.2429e+05 17-Nov-2003 02:04:00 "winter storm"
"NorthEast" 18-Sep-2004 05:54:00 0 0 NaT "equipment fault"
⋮
Importar una tabla con la herramienta de importación
Finalmente, puede obtener los datos de la importación y una vista previa interactiva desde hojas de cálculo o archivos de texto delimitados con la herramienta de importación. Existen dos formas de abrir la herramienta de importación.
Barra de herramientas de MATLAB: En la pestaña Home, en la sección Variable, haga clic en Import Data.
Línea de comandos de MATLAB: Introduzca
uiimport(
filename
)
, dondefilename
es el nombre de un archivo de texto o una hoja de cálculo.
Por ejemplo, abra el archivo de muestra outages.csv
con uiimport
y which
para obtener la ruta al archivo.
uiimport(which("outages.csv"))
La herramienta de importación muestra una vista previa de las seis columnas de outages.csv
. Para importar los datos como una tabla, siga estos pasos.
En la sección Imported Data, seleccione Table como tipo de salida.
Haga clic en Import Selection (cerca de la esquina superior derecha). La nueva tabla, llamada
outages
, aparece en su área de trabajo.
Consulte también
Funciones
readtable
|table
|array2table
|cell2table
|struct2table