Acceder a datos en tablas
Una tabla es un contenedor que almacena datos orientados a columnas en variables. Las variables de la tabla pueden tener distintos tipos de datos y tamaños, siempre y cuando todas las variables tengan el mismo número de filas. Las variables de la tabla tienen nombres, al igual que los campos de una estructura. Las filas de una tabla pueden tener nombres, pero no son necesarios. Para acceder a los datos de una tabla o modificarlos, indexe en las filas y las variables mediante sus nombres o índices numéricos.
Las razones habituales para indexar en tablas son:
Reordenar o eliminar filas y variables.
Agregar arreglos como filas o variables nuevas.
Extraer arreglos de datos para usarlos como argumentos de entrada para funciones.
Otra forma de acceder o modificar los datos de una tabla es abrirla en el editor de variables para editarla gráficamente. Para abrir una tabla, haga doble clic en ella en el navegador del área de trabajo o utilice la función openvar
.
Resumen de sintaxis de indexación de tablas
En función del tipo de indexación que utilice, puede acceder o bien a una subtabla o bien a un arreglo extraído de la tabla. La indexación con:
Paréntesis, (), devuelve una tabla que tiene filas y variables seleccionadas.
Notación de puntos devuelve el contenido de una variable como un arreglo.
Llaves, {}, devuelve un arreglo concatenado del contenido de las filas y las variables seleccionadas.
Puede especificar filas y variables por nombre, índice numérico o tipo de dato.
A partir de la versión R2019b, los nombres de variables y filas pueden incluir cualquier carácter, incluidos espacios y caracteres no ASCII. Además, también pueden comenzar por cualquier carácter, no solo con letras. Los nombres de variables y filas no tienen que ser identificadores de MATLAB® válidos (como determina la función
isvarname
).A partir de la versión R2022a, cuando especifique filas y variables por nombre, puede utilizar un objeto
pattern
para especificar nombres. Por ejemplo,"Var" + digitsPattern
encuentra todos los nombres que empiecen porVar
y que terminen por cualquier número de dígitos.
Tipo de salida | Sintaxis | Filas | Variables | Ejemplos |
---|---|---|---|---|
Tabla, con filas y variables específicas |
| Especificadas como:
| Especificadas como:
|
|
Tabla, que contenga variables que tengan el tipo de datos especificado |
| Especificadas como:
| Especificadas como un tipo de datos, como |
|
Arreglo, que extraiga los datos de una variable |
| No especificadas | Especificadas como:
|
|
Arreglo, que extraiga los datos de una variable y filas específicas |
| Especificadas como índices numéricos o lógicos del arreglo | Especificadas como:
|
|
Arreglo, que concatene datos de las filas y variables especificadas |
| Especificadas como:
| Especificadas como:
|
|
Arreglo, que concatene datos de las filas y variables especificadas con tipo de datos especificado |
| Especificadas como:
| Especificadas como un tipo de datos, como |
|
Arreglo, que concatene datos de todas las filas y variables |
| No especificadas | No especificadas |
|
Indexar tablas con filas y variables especificadas
Cargue los datos de muestra de 100 pacientes del archivo MAT patients
en las variables del área de trabajo.
load patients
whos
Name Size Bytes Class Attributes Age 100x1 800 double Diastolic 100x1 800 double Gender 100x1 11412 cell Height 100x1 800 double LastName 100x1 11616 cell Location 100x1 14208 cell SelfAssessedHealthStatus 100x1 11540 cell Smoker 100x1 100 logical Systolic 100x1 800 double Weight 100x1 800 double
Cree una tabla y rellénela con las variables del área de trabajo Age
, Height
, Weight
, Smoker
y SelfAssessedHealthStatus
. Utilice los identificadores únicos en LastName
como nombres de fila. T
es una tabla de 100 por 5, con 100 filas y cinco variables. (Cuando se especifica un vector de nombres de fila, no cuenta como una variable de la tabla). Además, convierta SelfAssessedHealthStatus
a una variable categorical
porque contiene solo los valores únicos Excellent
, Good
, Fair
y Poor
. Puede ser útil tratar una variable como un arreglo categorical
cuando tiene un conjunto fijo de valores que se pueden considerar categorías.
SelfAssessedHealthStatus = categorical(SelfAssessedHealthStatus); T = table(Age,Height,Weight,Smoker,SelfAssessedHealthStatus,... 'RowNames',LastName)
T=100×5 table
Age Height Weight Smoker SelfAssessedHealthStatus
___ ______ ______ ______ ________________________
Smith 38 71 176 true Excellent
Johnson 43 69 163 false Fair
Williams 38 64 131 false Good
Jones 40 67 133 false Fair
Brown 49 64 119 false Good
Davis 46 68 142 false Good
Miller 33 64 142 true Good
Wilson 40 68 180 false Good
Moore 28 68 183 false Excellent
Taylor 31 66 132 false Excellent
Anderson 45 68 128 false Excellent
Thomas 42 66 137 false Poor
Jackson 25 71 174 false Poor
White 39 72 202 true Excellent
Harris 36 65 129 false Good
Martin 48 71 181 true Good
⋮
Indexar mediante índices numéricos o la palabra clave end
Cree una subtabla que contenga las primeras cinco filas y todas las variables de T
. Para especificar las filas y las variables deseadas, utilice índices numéricos entre paréntesis. Este tipo de indexación es similar a la indexación en arreglos numéricos.
firstRows = T(1:5,:)
firstRows=5×5 table
Age Height Weight Smoker SelfAssessedHealthStatus
___ ______ ______ ______ ________________________
Smith 38 71 176 true Excellent
Johnson 43 69 163 false Fair
Williams 38 64 131 false Good
Jones 40 67 133 false Fair
Brown 49 64 119 false Good
También puede utilizar la palabra clave end
para indicar la última fila o variable. Utilice la palabra clave end
para indexar en las últimas cinco filas de la tabla.
lastRows = T(end-4:end,:)
lastRows=5×5 table
Age Height Weight Smoker SelfAssessedHealthStatus
___ ______ ______ ______ ________________________
Alexander 25 69 171 true Good
Russell 44 69 188 true Good
Griffin 49 70 186 false Fair
Diaz 45 68 172 true Good
Hayes 48 66 177 false Fair
Además de índices numéricos, se pueden utilizar los nombres de las filas o las variables entre paréntesis. (En este caso, utilizar índices de fila y dos puntos es más compacto que utilizar nombres de filas o variables).
Indexar mediante nombres
Seleccione todos los datos para los pacientes con los apellidos Griffin
, Diaz
y Hayes
. Dado que T
tiene nombres de filas que son los apellidos de los pacientes, indexe en T
mediante los nombres de filas.
rowsByName = T(["Griffin","Diaz","Hayes"],:)
rowsByName=3×5 table
Age Height Weight Smoker SelfAssessedHealthStatus
___ ______ ______ ______ ________________________
Griffin 49 70 186 false Fair
Diaz 45 68 172 true Good
Hayes 48 66 177 false Fair
También puede seleccionar variables por nombre. Cree una tabla que tenga solo las primeras cinco filas de T
y las variables Height
y Weight
. Muéstrela.
variablesByName = T(1:5,["Height","Weight"])
variablesByName=5×2 table
Height Weight
______ ______
Smith 71 176
Johnson 69 163
Williams 64 131
Jones 67 133
Brown 64 119
Los nombres de las variables de la tabla no tienen que ser identificadores de MATLAB® válidos. Pueden incluir espacios y caracteres no ASCII, y pueden comenzar por cualquier carácter.
Por ejemplo, renombre la variable SelfAssessedHealthStatus
mediante la función renamevars
. Agregue espacios y una raya para que la variable se lea mejor. A continuación, indexe en T
mediante los nombres de variables.
T = renamevars(T,"SelfAssessedHealthStatus","Self-Assessed Health Status"); T(1:5,["Age","Smoker","Self-Assessed Health Status"])
ans=5×3 table
Age Smoker Self-Assessed Health Status
___ ______ ___________________________
Smith 38 true Excellent
Johnson 43 false Fair
Williams 38 false Good
Jones 40 false Fair
Brown 49 false Good
Especificar nombres de filas y variables mediante patrones
Cuando se especifican nombres de filas o variables de tablas, se puede utilizar un patrón que defina una regla para el texto que coincida. Por ejemplo, puede coincidir con los nombres de variables que comiencen por "Var"
seguido de cualquier dígito. Puede crear expresiones con patrones mediante objetos, cadenas y operadores de pattern
.
Por ejemplo, indexar en T
por nombre de fila para encontrar todas las filas en las que el apellido del paciente empieza por la letra G
. Para obtener cualquier letra después de G
utilice la función wildcardPattern
.
beginsWithG = "G" + wildcardPattern
beginsWithG = pattern
Matching:
"G" + wildcardPattern
T(beginsWithG,:)
ans=6×5 table
Age Height Weight Smoker Self-Assessed Health Status
___ ______ ______ ______ ___________________________
Garcia 27 69 131 true Fair
Green 44 71 193 false Good
Gonzalez 35 66 118 false Fair
Gray 31 64 130 false Excellent
Gonzales 48 71 174 false Good
Griffin 49 70 186 false Fair
Indexe en T
por nombre de variable para encontrar cualquier nombre que contenga Status
como parte del nombre.
containsStatus = wildcardPattern + "Status" + wildcardPattern;
T(1:5,containsStatus)
ans=5×1 table
Self-Assessed Health Status
___________________________
Smith Excellent
Johnson Fair
Williams Good
Jones Fair
Brown Good
Indexar por tipo de datos de las variables
En lugar de especificar variables mediante nombres o números, puede crear un subíndice de tipo de datos que coincida con todas las variables que tengan el mismo tipo de datos.
En primer lugar, cree un subíndice de tipo de datos para encontrar las variables numéricas de la tabla mediante la función vartype
.
subscriptObject = vartype("numeric")
subscriptObject = table vartype subscript: Select table variables matching the type 'numeric' See Access Data in a Table.
Cree una tabla que tenga solo las variables numéricas de T
. La variable Smoker
es una variable lógica y la variable Self-Assessed Health Status
es una variable categorical
, por eso quedan excluidas.
onlyNumericVariables = T(:,subscriptObject)
onlyNumericVariables=100×3 table
Age Height Weight
___ ______ ______
Smith 38 71 176
Johnson 43 69 163
Williams 38 64 131
Jones 40 67 133
Brown 49 64 119
Davis 46 68 142
Miller 33 64 142
Wilson 40 68 180
Moore 28 68 183
Taylor 31 66 132
Anderson 45 68 128
Thomas 42 66 137
Jackson 25 71 174
White 39 72 202
Harris 36 65 129
Martin 48 71 181
⋮
Encontrar filas donde los valores cumplan condiciones lógicas
Cree otra tabla más pequeña a partir de los datos en el archivo MAT patients
.
load patients.mat
T = table(Age,Height,Weight,Smoker);
Para encontrar las filas de una tabla donde los valores cumplan una condición lógica, utilice la indexación lógica. En primer lugar, utilice la notación de puntos para acceder a las variables de la tabla. A continuación, puede crear un arreglo de índices lógicos donde los valores de las variables cumplan una condición que especifique usted. Indexe en la tabla mediante los índices lógicos.
Extraer datos de una variable de una tabla mediante la notación de puntos
Para extraer datos de una variable de una tabla utilice la notación de puntos.
Por ejemplo, represente un histograma de valores numéricos de la variable de tabla Weight
. Con la notación de puntos, puede tratar T.Weight
como un arreglo numérico. T.Weight
es un vector columna de doble precisión con 100 filas.
histogram(T.Weight)
title("Patient Weights")
Indexar en filas que cumplan condiciones lógicas
Puede indexar en un arreglo o una tabla mediante un arreglo de índices lógicos. Por lo general, se utiliza una expresión lógica que determina los valores de una variable de una tabla que cumplen una condición lógica. El resultado de la expresión es un arreglo de índices lógicos.
Por ejemplo, cree índices lógicos que coincidan con los pacientes cuya edad sea inferior a 40
.
rows = T.Age < 40
rows = 100x1 logical array
1
0
1
0
0
0
1
0
1
1
⋮
Para extraer alturas para pacientes cuya edad sea inferior a 40
, indexe en la variable Height
mediante rows
. Hay 56 pacientes con menos de 40
años.
T.Height(rows)
ans = 56×1
71
64
64
68
66
71
72
65
69
69
⋮
Puede indexar en una tabla con índices lógicos. Muestre las filas de T
para los pacientes con menos de 40
años.
T(rows,:)
ans=56×4 table
Age Height Weight Smoker
___ ______ ______ ______
38 71 176 true
38 64 131 false
33 64 142 true
28 68 183 false
31 66 132 false
25 71 174 false
39 72 202 true
36 65 129 false
32 69 191 true
27 69 131 true
37 70 179 false
39 64 117 false
28 65 123 true
25 70 189 false
39 63 143 false
25 63 114 false
⋮
Puede unir varias condiciones con una expresión lógica. Muestre las filas para pacientes fumadores con menos de 40
años.
rows = (T.Smoker==true & T.Age<40); T(rows,:)
ans=18×4 table
Age Height Weight Smoker
___ ______ ______ ______
38 71 176 true
33 64 142 true
39 72 202 true
32 69 191 true
27 69 131 true
28 65 123 true
30 67 186 true
33 66 180 true
39 71 164 true
37 70 194 true
33 67 115 true
31 72 178 true
28 69 189 true
39 68 182 true
37 65 120 true
31 66 141 true
⋮
Notación de puntos con cualquier nombre de variable o expresión
Cuando se indexa mediante notación de puntos, existen dos formas de especificar una variable.
Por el nombre, sin comillas. Por ejemplo,
T.Date
especifica una variable denominada"Date"
.Por una expresión, en cuyo caso la expresión está encerrada entre paréntesis tras el punto. Por ejemplo,
T.("Start Date")
especifica una variable denominada"Start Date"
.
Utilice la primera sintaxis cuando el nombre de una variable de una tabla también resulte ser un identificador de MATLAB® válido. (Un identificador válido comienza con una letra e incluye solo letras, dígitos y guiones bajos).
Utilice la segunda sintaxis cuando especifique:
Un número que indique la posición de la variable en la tabla.
El nombre de una variable que no sea un identificador de MATLAB válido.
Una función cuya salida sea el nombre de una variable de la tabla o una variable que haya agregado a la tabla. La salida de la función debe ser un vector de caracteres o un escalar de cadena.
Por ejemplo, cree una tabla a partir del archivo MAT patients
. A continuación, utilice la notación de puntos para acceder al contenido de las variables de la tabla.
load patients
T = table(Age,Height,Weight,Smoker);
Para especificar una variable por su posición en la tabla, utilice un número. Age
es la primera variable en T
, así que utilice el número 1
para especificar su posición.
T.(1)
ans = 100×1
38
43
38
40
49
46
33
40
28
31
⋮
Para especificar una variable por su nombre, especifíquelo tras el punto o enciérrelo entre comillas y paréntesis. Dado que Age
es un identificador válido, puede especificarlo mediante T.Age
o T.("Age")
.
T.Age
ans = 100×1
38
43
38
40
49
46
33
40
28
31
⋮
Puede especificar los nombres de variables de tablas que no sean identificadores de MATLAB válidos. Los nombres de variables pueden incluir espacios y caracteres no ASCII, y pueden comenzar por cualquier carácter. Sin embargo, cuando utilice la notación de puntos para acceder a una variable de una tabla como un nombre, debe especificarla mediante comillas y paréntesis.
Por ejemplo, agregue el nombre de una variable con espacios y un guion a T
.
SelfAssessedHealthStatus = categorical(SelfAssessedHealthStatus); T = addvars(T,SelfAssessedHealthStatus,'NewVariableNames',"Self-Assessed Health Status"); T(1:5,:)
ans=5×5 table
Age Height Weight Smoker Self-Assessed Health Status
___ ______ ______ ______ ___________________________
38 71 176 true Excellent
43 69 163 false Fair
38 64 131 false Good
40 67 133 false Fair
49 64 119 false Good
Acceda a la nueva variable de la tabla mediante la notación de puntos. Muestre los primeros cinco elementos.
healthStatus = T.("Self-Assessed Health Status");
healthStatus(1:5)
ans = 5x1 categorical
Excellent
Fair
Good
Fair
Good
También puede utilizar la salida de una función como nombre de una variable. Elimine la variable T.("Self-Assessed Health Status")
. A continuación, reemplácela con una variable cuyo nombre incluya la fecha actual.
T.("Self-Assessed Health Status") = []; T.(string(datetime("today")) + " Self Report") = SelfAssessedHealthStatus; T(1:5,:)
ans=5×5 table
Age Height Weight Smoker 31-Aug-2022 Self Report
___ ______ ______ ______ _______________________
38 71 176 true Excellent
43 69 163 false Fair
38 64 131 false Good
40 67 133 false Fair
49 64 119 false Good
Extraer datos de las filas y variables especificadas
La indexación con llaves extrae datos de una tabla y tiene como resultado un arreglo, no una subtabla. Pero, además de esa diferencia, puede especificar filas y variables mediante números, nombres y subíndices de tipo datos, al igual que puede hacer cuando indexa mediante paréntesis. Para extraer valores de una tabla, utilice llaves. Si extrae valores de múltiples variables de tablas, las variables deben tener tipos de datos que permitan concatenarlos juntos.
Especificar filas y variables
Cree una tabla de arreglos numéricos y lógicos a partir del archivo patients
.
load patients T = table(Age,Height,Weight,Smoker,... 'RowNames',LastName);
Extraiga datos de múltiples variables en T
. A diferencia de la notación de puntos, la indexación con llaves puede extraer valores de múltiples variables de tabla y concatenarlos en un arreglo.
Extraiga la altura y el peso de los cinco primeros pacientes. Utilice índices numéricos para seleccionar las primeras cinco filas, y nombres de variables para seleccionar las variables Height
y Weight
.
A = T{1:5,["Height","Weight"]}
A = 5×2
71 176
69 163
64 131
67 133
64 119
A
es un arreglo numérico de 5 por 2, no una tabla.
Si especifica un nombre de variable, la indexación con llaves tiene como resultado el mismo arreglo que se puede obtener con la notación de puntos. Sin embargo, debe especificar tanto las filas como las variables cuando utilice la indexación con llaves. Por ejemplo, las sintaxis T.Height
y T{:,"Height"}
devuelven el mismo arreglo.
Extraer datos de todas las filas y variables
Si todas las variables de la tabla tienen tipos de datos que les permitan concatenarse juntos, puede utilizar la sintaxis T.Variables
para poner todos los datos de la tabla en un arreglo. Esta sintaxis equivale a T{:,:}
, donde los dos puntos indican todas las filas y todas las variables. Si la tabla tiene nombres de fila, estos no están incluidos en la salida de T.Variables
. Los nombres de filas no se almacenan en una variable de la tabla. Los nombres de filas forman parte de los metadatos que describen una tabla.
A2 = T.Variables
A2 = 100×4
38 71 176 1
43 69 163 0
38 64 131 0
40 67 133 0
49 64 119 0
46 68 142 0
33 64 142 1
40 68 180 0
28 68 183 0
31 66 132 0
⋮
Consulte también
table
| histogram
| addvars
| vartype
| renamevars
Temas relacionados
- Advantages of Using Tables
- Crear tablas y asignarles datos
- Modificar unidades, descripciones y nombres de variables de una tabla
- Calculations on Data in Tables
- Data Cleaning and Calculations in Tables
- Grouped Calculations in Tables and Timetables
- Buscar los elementos de un arreglo que cumplen una condición