Contenido principal

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"         

Consulte también

Funciones

Herramientas

Temas