Hauptinhalt

Hinzufügen und Löschen von Tabellenzeilen

Dieses Beispiel veranschaulicht, wie Zeilen in einer Tabelle hinzugefügt und gelöscht werden. Sie können Zeilen am unteren Rand oder in der Mitte hinzufügen oder zwei Tabellen kombinieren. Wenn Sie Platz für eine Tabelle vorbelegen, können Sie sie mit Daten füllen, indem Sie Zeilen ersetzen. Sie können Zeilen nach Nummer, Name oder Bedingung löschen, einschließlich doppelter Zeilen oder Zeilen mit fehlenden Werten. In einfachen Fällen können Sie eine Tabelle interaktiv mithilfe von Variables Editor modifizieren.

Erstellen einer Beispieltabelle

Erstellen Sie zunächst mithilfe der Funktion readtable eine Tabelle aus einer CSV-Datei (kommagetrennte Werte). Die Beispieldatei enthält simulierte Daten zu einer kleinen Anzahl Patienten. Die dritte Zeile weist fehlende Werte auf, was auf unvollständige Daten für diesen Patienten hindeutet.

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"            

Hinzufügen einer Zeile zum Ende der Tabelle

Um dem Ende einer Tabelle eine Zeile hinzuzufügen, verwenden Sie eine Tabelle oder ein Zellenarray mit einer Zeile. Fügen Sie die neue Zeile hinzu, indem Sie sie außerhalb des bestehenden Zeilenindex platzieren.

Zur Einfachheit können Sie ein Zellenarray mit Werten für die neue Zeile verwenden. Verwenden Sie Werte für jede Tabellenvariable mit kompatiblen Datentypen.

oneRowCellArray = {"Lee" 55 73 167 false "Fair"}
oneRowCellArray=1×6 cell array
    {["Lee"]}    {[55]}    {[73]}    {[167]}    {[0]}    {["Fair"]}

Um die Zeile am unteren Rand der Tabelle hinzuzufügen, geben Sie end+1 als Zeilenindex an. Im Allgemeinen gibt das Schlüsselwort end das letzte Element eines Arrays an. end gibt die letzte Zeile an, wenn es verwendet wird, um den Zeilenindex eines Arrays oder einer Tabelle anzugeben. Die Zuweisung extrahiert Werte aus dem Zellenarray und weist diese der neuen Zeile von patientSample1 hinzu.

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"            

Ähnlich hierzu können Sie eine einzeilige Tabelle verwenden, entweder, indem Sie eine neue Tabelle erstellen und eine Zeile einer bestehenden Tabelle angeben.

Erstellen Sie eine einzeilige Tabelle.

oneRowTable = table("Griffin",49,70,186,false,"Fair")
oneRowTable=1×6 table
      Var1       Var2    Var3    Var4    Var5      Var6 
    _________    ____    ____    ____    _____    ______

    "Griffin"     49      70     186     false    "Fair"

Wenn Sie eine Zeile mit dieser Syntax zuweisen, können sich die Namen der Variablen patientSample1 und oneRowTable unterscheiden. In dieser Syntax extrahiert die Zuweisung Werte von oneRowTable und weist sie einer neuen Zeile von patientSample1 zu.

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"            

Ersetzen einer bestehenden Zeile

Zudem können Sie einer bereits bestehenden Zeile Werte zuweisen. Die Zuweisungsoperation überschreibt die Zeile.

Weisen Sie beispielsweise oneRowCellArray der zweiten Zeile von patientSample1 zu. Die Zuweisung überschreibt die Daten für den Patienten Martinez mit den Daten für den Patienten 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"            

Einfügen einer Zeile an einer bestimmten Position

Um eine Zeile an einer bestimmten Position zwischen bestehenden Zeilen einzufügen, teilen Sie die Tabelle in zwei Teile auf und verwenden Sie eine vertikale Verknüpfung. Fügen Sie beispielsweise oneRowCellArray zwischen der dritten und vierten Zeile der Tabelle ein.

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"            

Hinzufügen einer Zeile und Sortieren der Tabelle

Eine weitere Methode zum Einfügen von Zeilen besteht darin, Zeilen der Ende einer Tabelle hinzuzufügen und daraufhin die Tabelle mithilfe der Funktion sortrows neu zu ordnen.

Fügen Sie zum Beispiel eine Zeile für einen weiteren Patienten hinzu.

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"       

Wenn Ihre Tabelle unsortiert ist oder unsortiert wird, wenn Sie neue Zeilen hinzufügen, sortieren Sie die Tabelle mithilfe von sortrows. Standardmäßig sortiert sortrows die Tabelle aufsteigend nach den Werten der ersten Variable. In diesem Fall wird nach den Nachnamen der Patienten sortiert.

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"       

Hinzufügen von Zeilen zu einer leeren Tabelle

Sie können mit einer leeren Tabelle beginnen und dieser Datenzeilen hinzufügen. Diese Methode ist nützlich, wenn Sie Daten im zeitlichen Verlauf erfassen und regelmäßig Daten am Ende der Tabelle hinzufügen.

Erstellen Sie zunächst eine leere Tabelle.

startFromEmpty = table
startFromEmpty =

  0×0 empty table

Erweitern Sie daraufhin die Tabelle, indem Sie nach der letzten Zeile der Tabelle eine Zeile hinzufügen.

startFromEmpty(end+1,:) = oneRowCellArray
startFromEmpty=1×6 table
    Var1     Var2    Var3    Var4    Var5      Var6 
    _____    ____    ____    ____    _____    ______

    "Lee"     55      73     167     false    "Fair"

Um alle Variablen umzubenennen, weisen Sie der Eigenschaft VariableNames der Tabelle ein Array mit neuen Variablennamen hinzu.

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"         

Hinzufügen von Zeilen zu einer vorbelegten Tabelle

Sie können mit einer leeren Tabelle beginnen und Zeilen einzeln hinzufügen; es könnte jedoch effizienter sein, eine Tabelle mit vielen Zeilen vorzubelegen. Daraufhin können Sie Zeilen ausfüllen, wenn Daten verfügbar werden.

Verwenden Sie die Funktion table, um eine Tabelle vorzubelegen. Geben Sie die Größe der Tabelle, die Variablennamen und die Datentypen der Variablen an. Belegen Sie beispielsweise eine Tabelle mit sechs Zeilen und neun Variablen vor. Die Vorbelegung befüllt die Variablen mit fehlenden Werten, die für ihre Datentypen geeignet sind.

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>        

Fügen Sie der ersten Zeile Daten hinzu. Die Zuweisung überschreibt die fehlenden Werte in der ersten Zeile.

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>        

Hinzufügen leerer Zeilen

Ab R2023b können Sie mit der Funktion resize mehr Zeilen am Ende einer Tabelle vorbelegen. Die neuen Zeilen sind mit fehlenden Werten gefüllt, die Sie später aktualisieren können.

Ermitteln Sie zunächst mithilfe der Funktion height, wie viele Zeilen patientSample1 aufweist.

numberOfRows = height(patientSample1)
numberOfRows = 
9

Fügen Sie daraufhin mithilfe von resize drei weitere Zeilen hinzu. Das zweite Argument für resize gibt die Gesamtanzahl Zeilen in der geänderten Tabelle an.

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>         

Kombinieren von zwei Tabellen

Eine weitere Methode zum Hinzufügen von Zeilen zu einer Tabelle ist das Verknüpfen mit einer weiteren Tabelle. Um zwei Tabellen vertikal miteinander verknüpfen zu können, müssen in beiden Tabellen die Anzahl der Variablen und die Namen dieser Variablen identisch sein. Passende Variablen der oberen und unteren Tabelle müssen kompatible Datentypen und -Größen aufweisen. Die Variablen der zwei Tabellen können jedoch in einer anderen Reihenfolge vorliegen, da bei der vertikalen Verknüpfung Variablen nach Name miteinander abgeglichen werden. Die Reihenfolge der Variablen in der verknüpften Tabelle entspricht der Reihenfolge der oberen Tabelle.

Erstellen Sie zum Beispiel aus einer weiteren CSV-Beispieldatei eine zweite Tabelle. Die zweite Tabelle weist dieselben Variablen wie die erste Tabelle auf.

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"            

Verknüpfen Sie die zwei Tabellen vertikal.

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"            

Löschen von Zeilen nach Zeilennummer

Sie können Zeilen löschen, indem Sie die Zeilennummer als Index verwenden und das leere Array [] zuweisen.

Löschen Sie beispielsweise die Zeilen 2 und 5 aus der Tabelle.

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>         

Löschen mehrfach vorhandener Zeilen

Sie können eine Tabelle zudem bereinigen, indem Sie mehrfach vorhandene Zeilen löschen.

Entfernen Sie beispielsweise die mehrfach vorhandenen Zeilen des Patienten namens Lee mithilfe der Funktion unique. Diese Funktion entfernt nicht die Zeilen am Ende, die mit fehlenden Werten gefüllt sind, da fehlende Werte als eindeutig angesehen werden. Ein fehlender Wert ist nicht mit einem anderen Wert identisch, auch nicht mit sich selbst.

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>         

Löschen von Zeilen mit fehlenden Werten

Wenn eine Tabelle Zeilen mit fehlenden Werten aufweist, können Sie diese mit der Funktion rmmissing löschen.

Löschen Sie beispielsweise Tabellenzeilen mit fehlenden Werten aus der Patienten-Datentabelle.

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"       

Alternativ können Sie fehlende Werte mithilfe der Funktion fillmissing ausfüllen.

Löschen von Zeilen, die eine Bedingung erfüllen

Ebenfalls können Sie Zeilen löschen, bei denen eine oder mehrere Variablen eine Bedingung erfüllen.

Suchen Sie beispielsweise Zeilen mit Patienten mit einem Alter von 45 Jahren oder jünger. Der Operator <= gibt einen logischen Vektor zurück, den Sie als Zeilenindex verwenden können.

ageLessThanOrEqualTo45 = patientSample1.Age <= 45
ageLessThanOrEqualTo45 = 4×1 logical array

   1
   0
   0
   1

Löschen Sie die Zeilen, deren Age kleiner gleich 45 ist.

patientSample1(ageLessThanOrEqualTo45,:) = []
patientSample1=2×6 table
    LastName     Age    Height    Weight    Smoker    SelfAssessedHealthStatus
    _________    ___    ______    ______    ______    ________________________

    "Griffin"    49       70       186        0                "Fair"         
    "Lee"        55       73       167        0                "Fair"         

Löschen von Zeilen nach Zeilenname

Wenn eine Tabelle Zeilennamen enthält, können Sie die Zeilennamen als Index verwenden. Geben Sie Zeilennamen für patientSample1 an. Löschen Sie daraufhin eine Zeile anhand des Zeilennamens.

Geben Sie zuerst die für Kennungen definierte Variable LastName als Zeilennamen an. Löschen Sie dann die Variable LastName aus 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"         

Löschen Sie eine Zeile, indem Sie den Zeilennamen als Index verwenden und das leere Array [] zuweisen.

patientSample1("Lee",:) = []
patientSample1=1×5 table
               Age    Height    Weight    Smoker    SelfAssessedHealthStatus
               ___    ______    ______    ______    ________________________

    Griffin    49       70       186        0                "Fair"         

Siehe auch

Funktionen

Tools

Themen