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"