Agregar y eliminar filas de una tabla
Este ejemplo muestra cómo agregar y eliminar filas en una tabla. Puede añadir filas en la parte inferior, insertar filas en el centro o combinar dos tablas. Si asigna previamente espacio para una tabla, puede rellenarla con datos reemplazando filas. Puede eliminar filas por número, por nombre o por condición, incluidas las filas duplicadas o con valores faltantes. En los casos más sencillos, puede modificar una tabla de forma interactiva mediante Variables Editor.
Crear una tabla de muestra
Primero, cree una tabla a partir de un archivo con valores separados por comas (CSV) usando la función readtable. El archivo de muestra contiene datos simulados sobre un pequeño número de pacientes. La tercera fila tiene valores faltantes, lo que indica que los datos de ese paciente están incompletos.
patientSample1 = readtable("patientSample1.csv",TextType="string")
patientSample1=5×6 table
LastName Age Height Weight Smoker SelfAssessedHealthStatus
__________ ___ ______ ______ ______ ________________________
"Brown" 49 64 119 0 "Good"
"Martinez" 37 70 179 0 "Good"
"Chen" 55 NaN NaN 1 <missing>
"Wright" 45 70 126 1 "Excellent"
"Kim" 41 65 127 0 "Poor"
Añadir una fila al final de una tabla
Para añadir una fila al final de una tabla, utilice una tabla de una fila o un arreglo de celdas de una fila. Añada la nueva fila colocándola fuera del límite del índice de la fila existente.
Para una mayor comodidad, utilice un arreglo de celdas con valores para la fila nueva. Incluya valores para cada variable de tabla con tipos de datos compatibles.
oneRowCellArray = {"Lee" 55 73 167 false "Fair"}oneRowCellArray=1×6 cell array
{["Lee"]} {[55]} {[73]} {[167]} {[0]} {["Fair"]}
Para añadir la fila a la parte inferior de la tabla, especifique end+1 como índice de la fila. En general, la palabra clave end especifica el último elemento de un arreglo. Cuando se utiliza para especificar el índice de fila de un arreglo o tabla, end especifica la última fila. La asignación extrae valores del arreglo de celdas y los asigna a la nueva fila de patientSample1.
patientSample1(end+1,:) = oneRowCellArray
patientSample1=6×6 table
LastName Age Height Weight Smoker SelfAssessedHealthStatus
__________ ___ ______ ______ ______ ________________________
"Brown" 49 64 119 0 "Good"
"Martinez" 37 70 179 0 "Good"
"Chen" 55 NaN NaN 1 <missing>
"Wright" 45 70 126 1 "Excellent"
"Kim" 41 65 127 0 "Poor"
"Lee" 55 73 167 0 "Fair"
De forma similar, puede utilizar una tabla de una fila, ya sea creando una nueva tabla o especificando una fila de una tabla existente.
Cree una tabla de una fila.
oneRowTable = table("Griffin",49,70,186,false,"Fair")
oneRowTable=1×6 table
Var1 Var2 Var3 Var4 Var5 Var6
_________ ____ ____ ____ _____ ______
"Griffin" 49 70 186 false "Fair"
Cuando asigna una fila utilizando esta sintaxis, los nombres de las variables de patientSample1 y oneRowTable pueden ser diferentes. En esta sintaxis, la asignación extrae valores de oneRowTable y los asigna a la nueva fila de patientSample1.
patientSample1(end+1,:) = oneRowTable
patientSample1=7×6 table
LastName Age Height Weight Smoker SelfAssessedHealthStatus
__________ ___ ______ ______ ______ ________________________
"Brown" 49 64 119 0 "Good"
"Martinez" 37 70 179 0 "Good"
"Chen" 55 NaN NaN 1 <missing>
"Wright" 45 70 126 1 "Excellent"
"Kim" 41 65 127 0 "Poor"
"Lee" 55 73 167 0 "Fair"
"Griffin" 49 70 186 0 "Fair"
Reemplazar una fila existente
También puede asignar valores a una fila que ya existe. La operación de asignación sobrescribe la fila.
Por ejemplo, asigne oneRowCellArray a la segunda fila de patientSample1. La asignación sobrescribe los datos del paciente Martinez con los datos del paciente Lee.
patientSample1(2,:) = oneRowCellArray
patientSample1=7×6 table
LastName Age Height Weight Smoker SelfAssessedHealthStatus
_________ ___ ______ ______ ______ ________________________
"Brown" 49 64 119 0 "Good"
"Lee" 55 73 167 0 "Fair"
"Chen" 55 NaN NaN 1 <missing>
"Wright" 45 70 126 1 "Excellent"
"Kim" 41 65 127 0 "Poor"
"Lee" 55 73 167 0 "Fair"
"Griffin" 49 70 186 0 "Fair"
Insertar una fila en una posición específica
Para insertar una fila en una posición específica entre las filas existentes, divida la tabla en dos y utilice la concatenación vertical. Por ejemplo, inserte oneRowCellArray entre la tercera y cuarta fila de la tabla.
patientSample1 = [patientSample1(1:3,:); oneRowCellArray; patientSample1(4:end,:)]
patientSample1=8×6 table
LastName Age Height Weight Smoker SelfAssessedHealthStatus
_________ ___ ______ ______ ______ ________________________
"Brown" 49 64 119 0 "Good"
"Lee" 55 73 167 0 "Fair"
"Chen" 55 NaN NaN 1 <missing>
"Lee" 55 73 167 0 "Fair"
"Wright" 45 70 126 1 "Excellent"
"Kim" 41 65 127 0 "Poor"
"Lee" 55 73 167 0 "Fair"
"Griffin" 49 70 186 0 "Fair"
Añadir una fila y ordenar la tabla
Otra forma de insertar filas es añadirlas al final de una tabla y, luego, reordenar la tabla usando la función sortrows.
Por ejemplo, añada una fila para otro paciente.
patientSample1(end+1,:) = {"Anderson" 45 68 128 false "Excellent"}patientSample1=9×6 table
LastName Age Height Weight Smoker SelfAssessedHealthStatus
__________ ___ ______ ______ ______ ________________________
"Brown" 49 64 119 0 "Good"
"Lee" 55 73 167 0 "Fair"
"Chen" 55 NaN NaN 1 <missing>
"Lee" 55 73 167 0 "Fair"
"Wright" 45 70 126 1 "Excellent"
"Kim" 41 65 127 0 "Poor"
"Lee" 55 73 167 0 "Fair"
"Griffin" 49 70 186 0 "Fair"
"Anderson" 45 68 128 0 "Excellent"
Si la tabla no está ordenada, o si se desordena al añadir filas nuevas, ordénela utilizando sortrows. De forma predeterminada, sortrows ordena la tabla por los valores de la primera variable en orden ascendente. En este caso, el orden de clasificación es por los apellidos de los pacientes.
patientSample1 = sortrows(patientSample1)
patientSample1=9×6 table
LastName Age Height Weight Smoker SelfAssessedHealthStatus
__________ ___ ______ ______ ______ ________________________
"Anderson" 45 68 128 0 "Excellent"
"Brown" 49 64 119 0 "Good"
"Chen" 55 NaN NaN 1 <missing>
"Griffin" 49 70 186 0 "Fair"
"Kim" 41 65 127 0 "Poor"
"Lee" 55 73 167 0 "Fair"
"Lee" 55 73 167 0 "Fair"
"Lee" 55 73 167 0 "Fair"
"Wright" 45 70 126 1 "Excellent"
Añadir filas a una tabla vacía
Puede comenzar con una tabla vacía y añadirle filas de datos. Este método puede resultar útil si recopila datos a lo largo del tiempo y desea añadir datos de manera periódica al final de una tabla.
Primero, cree una tabla vacía.
startFromEmpty = table
startFromEmpty = 0×0 empty table
Después, expanda la tabla añadiendo una fila después de la última fila de la tabla.
startFromEmpty(end+1,:) = oneRowCellArray
startFromEmpty=1×6 table
Var1 Var2 Var3 Var4 Var5 Var6
_____ ____ ____ ____ _____ ______
"Lee" 55 73 167 false "Fair"
Para modificar el nombre de todas las variables, asigne un arreglo de nuevos nombres de variables a la propiedad VariableNames de la tabla.
varNames = ["LastName" "Age" "Height" "Weight" "Smoker" "SelfAssessedHealthStatus"]; startFromEmpty.Properties.VariableNames = varNames
startFromEmpty=1×6 table
LastName Age Height Weight Smoker SelfAssessedHealthStatus
________ ___ ______ ______ ______ ________________________
"Lee" 55 73 167 false "Fair"
Asignar filas a una tabla asignada previamente
Aunque puede comenzar con una tabla vacía y añadir filas de una en una, puede resultar más eficiente asignar previamente una tabla con muchas filas. Luego, puede rellenar las filas a medida que los datos estén disponibles.
Para asignar previamente una tabla, use la función table. Especifique el tamaño de la tabla, los nombres de las variables y los tipos de datos de las variables. Por ejemplo, asigne previamente una tabla con seis filas y nueve variables. La preasignación rellena las variables con valores faltantes apropiados para los tipos de datos.
varNames = ["LastName" "Age" "Height" "Weight" "Smoker" "SelfAssessedHealthStatus"]; varTypes = ["string" "double" "double" "double" "logical" "string"]; preallocatedTable = table(Size=[4 6],VariableNames=varNames,VariableTypes=varTypes)
preallocatedTable=4×6 table
LastName Age Height Weight Smoker SelfAssessedHealthStatus
_________ ___ ______ ______ ______ ________________________
<missing> 0 0 0 false <missing>
<missing> 0 0 0 false <missing>
<missing> 0 0 0 false <missing>
<missing> 0 0 0 false <missing>
Añada datos a la primera fila. Esta asignación sobrescribe los valores faltantes en la primera fila.
preallocatedTable(1,:) = oneRowCellArray
preallocatedTable=4×6 table
LastName Age Height Weight Smoker SelfAssessedHealthStatus
_________ ___ ______ ______ ______ ________________________
"Lee" 55 73 167 false "Fair"
<missing> 0 0 0 false <missing>
<missing> 0 0 0 false <missing>
<missing> 0 0 0 false <missing>
Añadir filas vacías
A partir de la versión R2023b, puede asignar previamente más filas al final de una tabla usando la función resize. Las filas nuevas se rellenan con valores faltantes que puede actualizar más tarde.
Primero, determine cuántas filas tiene patientSample1 usando la función height.
numberOfRows = height(patientSample1)
numberOfRows = 9
Después, añada tres filas más con resize. El segundo argumento para resize especifica el número total de filas de la tabla redimensionada.
patientSample1 = resize(patientSample1,numberOfRows+3)
patientSample1=12×6 table
LastName Age Height Weight Smoker SelfAssessedHealthStatus
__________ ___ ______ ______ ______ ________________________
"Anderson" 45 68 128 0 "Excellent"
"Brown" 49 64 119 0 "Good"
"Chen" 55 NaN NaN 1 <missing>
"Griffin" 49 70 186 0 "Fair"
"Kim" 41 65 127 0 "Poor"
"Lee" 55 73 167 0 "Fair"
"Lee" 55 73 167 0 "Fair"
"Lee" 55 73 167 0 "Fair"
"Wright" 45 70 126 1 "Excellent"
<missing> 0 0 0 0 <missing>
<missing> 0 0 0 0 <missing>
<missing> 0 0 0 0 <missing>
Combinar dos tablas
Otra forma de añadir filas a una tabla es concatenar otra tabla. Cuando se concatenan verticalmente dos tablas, deben tener el mismo número de variables con los mismos nombres. Las variables coincidentes de las tablas superior e inferior deben tener tipos de datos y tamaños compatibles. Sin embargo, las dos tablas pueden tener las variables en un orden diferente porque la concatenación vertical hace coincidir las variables por nombre. La tabla concatenada tiene variables en el mismo orden que la tabla superior.
Por ejemplo, cree una segunda tabla a partir de otro archivo CSV. La segunda tabla tiene las mismas variables que la primera.
patientSample2 = readtable("patientSample2.csv",TextType="string")
patientSample2=4×6 table
LastName Age Height Weight Smoker SelfAssessedHealthStatus
___________ ___ ______ ______ ______ ________________________
"Garcia" 27 69 131 1 "Fair"
"Murphy" 36 71 180 0 "Good"
"Takahashi" 29 63 130 0 "Excellent"
"Brown" 49 64 119 0 "Good"
Concatene verticalmente las dos tablas.
combinedPatients = [patientSample1; patientSample2]
combinedPatients=16×6 table
LastName Age Height Weight Smoker SelfAssessedHealthStatus
___________ ___ ______ ______ ______ ________________________
"Anderson" 45 68 128 0 "Excellent"
"Brown" 49 64 119 0 "Good"
"Chen" 55 NaN NaN 1 <missing>
"Griffin" 49 70 186 0 "Fair"
"Kim" 41 65 127 0 "Poor"
"Lee" 55 73 167 0 "Fair"
"Lee" 55 73 167 0 "Fair"
"Lee" 55 73 167 0 "Fair"
"Wright" 45 70 126 1 "Excellent"
<missing> 0 0 0 0 <missing>
<missing> 0 0 0 0 <missing>
<missing> 0 0 0 0 <missing>
"Garcia" 27 69 131 1 "Fair"
"Murphy" 36 71 180 0 "Good"
"Takahashi" 29 63 130 0 "Excellent"
"Brown" 49 64 119 0 "Good"
Eliminar filas por número de fila
Puede eliminar filas utilizando el número de fila como subíndice y asignando un arreglo vacío, [].
Por ejemplo, elimine las filas 2 y 5 de la tabla.
patientSample1([2 5],:) = []
patientSample1=10×6 table
LastName Age Height Weight Smoker SelfAssessedHealthStatus
__________ ___ ______ ______ ______ ________________________
"Anderson" 45 68 128 0 "Excellent"
"Chen" 55 NaN NaN 1 <missing>
"Griffin" 49 70 186 0 "Fair"
"Lee" 55 73 167 0 "Fair"
"Lee" 55 73 167 0 "Fair"
"Lee" 55 73 167 0 "Fair"
"Wright" 45 70 126 1 "Excellent"
<missing> 0 0 0 0 <missing>
<missing> 0 0 0 0 <missing>
<missing> 0 0 0 0 <missing>
Eliminar filas duplicadas
También puede limpiar una tabla eliminando filas duplicadas.
Por ejemplo, elimine las filas duplicadas del paciente con el nombre Lee usando la función unique. La función no elimina las filas al final que están rellenas con valores faltantes, ya que los valores faltantes se consideran únicos. Un valor faltante no es igual a ningún valor, ni siquiera a sí mismo.
patientSample1 = unique(patientSample1)
patientSample1=8×6 table
LastName Age Height Weight Smoker SelfAssessedHealthStatus
__________ ___ ______ ______ ______ ________________________
"Anderson" 45 68 128 0 "Excellent"
"Chen" 55 NaN NaN 1 <missing>
"Griffin" 49 70 186 0 "Fair"
"Lee" 55 73 167 0 "Fair"
"Wright" 45 70 126 1 "Excellent"
<missing> 0 0 0 0 <missing>
<missing> 0 0 0 0 <missing>
<missing> 0 0 0 0 <missing>
Eliminar filas con valores faltantes
Si una tabla tiene filas con valores faltantes, puede eliminarlas usando la función rmmissing.
Por ejemplo, elimine de la tabla de datos de pacientes las filas que tengan valores faltantes.
patientSample1 = rmmissing(patientSample1)
patientSample1=4×6 table
LastName Age Height Weight Smoker SelfAssessedHealthStatus
__________ ___ ______ ______ ______ ________________________
"Anderson" 45 68 128 0 "Excellent"
"Griffin" 49 70 186 0 "Fair"
"Lee" 55 73 167 0 "Fair"
"Wright" 45 70 126 1 "Excellent"
Como alternativa, puede rellenar valores faltantes usando la función fillmissing.
Eliminar filas que cumplen una condición
También puede eliminar las filas en las que los valores de una o más variables cumplen una condición.
Por ejemplo, encuentre las filas de los pacientes de 45 años o más jóvenes. El operador <= devuelve un vector lógico que puede utilizar como subíndice de fila.
ageLessThanOrEqualTo45 = patientSample1.Age <= 45
ageLessThanOrEqualTo45 = 4×1 logical array
1
0
0
1
Elimine las filas en las que Age es menor que o igual a 45.
patientSample1(ageLessThanOrEqualTo45,:) = []
patientSample1=2×6 table
LastName Age Height Weight Smoker SelfAssessedHealthStatus
_________ ___ ______ ______ ______ ________________________
"Griffin" 49 70 186 0 "Fair"
"Lee" 55 73 167 0 "Fair"
Eliminar filas por nombre de fila
Si una tabla tiene nombres de fila, puede utilizar nombres de fila como subíndices. Especifique nombres de fila para patientSample1. Luego, elimine una fila por su nombre de fila.
Primero, especifique la variable de los identificadores LastName como los nombres de filas. Después, elimine la variable LastName de patientSample1.
patientSample1.Properties.RowNames = patientSample1.LastName; patientSample1.LastName = []
patientSample1=2×5 table
Age Height Weight Smoker SelfAssessedHealthStatus
___ ______ ______ ______ ________________________
Griffin 49 70 186 0 "Fair"
Lee 55 73 167 0 "Fair"
Elimine una fila utilizando el nombre de fila como subíndice y asignando un arreglo vacío, [].
patientSample1("Lee",:) = []patientSample1=1×5 table
Age Height Weight Smoker SelfAssessedHealthStatus
___ ______ ______ ______ ________________________
Griffin 49 70 186 0 "Fair"