In diesem Tutorial behandeln wir, wie Sie einen Datenrahmen in R anhängen – einer der häufigsten Modifikationen, die für einen Datenrahmen durchgeführt werden.
Ein Datenrahmen ist eine der wesentlichen Datenstrukturen in der R -Programmiersprache. Es ist bekannt, dass es sehr flexibel ist, da es viele Datentypen enthalten kann und leicht zu ändern ist. Eine der typischsten Modifikationen, die an einem Datenrahmen in R durchgeführt wurden, ist das Hinzufügen neuer Beobachtungen (Zeilen).
In diesem Tutorial diskutieren wir die verschiedenen Möglichkeiten, einen oder mehrere Zeilen an einen Datenrahmen in R anzuhängen. Wenn Sie neu für das Erstellen von DataFrame in R haben, möchten Sie möglicherweise lesen So erstellen Sie einen Datenrahmen in R. Bevor Sie diesen Beitrag fortsetzen.
Lassen Sie uns vor dem Begin einen einfachen Datenrahmen als Experiment erstellen:
super_sleepers_initial <- knowledge.body(animal=c('koala', 'hedgehog'),
nation=c('Australia', 'Italy'),
avg_sleep_hours=c(21, 18),
stringsAsFactors=FALSE)
print(super_sleepers_initial)
| Tier | Land | avg_sleep_hours | |
| 1 | Koala | Australien | 21 |
| 2 | Igel | Italien | 18 |
Notiz: Beim Erstellen des oben genannten Datenframe
stringsAsFactors=FALSE. Standardmäßig ist dieser ParameterTRUEIn den meisten Fällen (es sei denn, wir haben keine Zeichenspalte des Datentyps), ist es stark empfohlen auf einstellenFALSEUnterdrückung der Standardkonvertierung des Zeichens in den Datentyp und daher vermeiden Sie unerwünschte Nebenwirkungen. Als Experiment können Sie diesen Parameter aus dem obigen Code -Stück entfernen, diese und die nachfolgenden Codezellen ausführen und die Ergebnisse beobachten.
Anhängen einer einzelnen Zeile an einen Datenrahmen in R.
Verwendung rbind()
Um eine Zeile an einen Datenrahmen in R anzuhängen, können wir die verwenden rbind() integrierte Funktion, die für „Reihenbindungen“ steht. Die grundlegende Syntax ist die folgende:
dataframe <- rbind(dataframe, new_row)
Beachten Sie, dass in der obigen Syntax durch new_row Wir werden höchstwahrscheinlich a verstehen Liste eher als a VektorEs sei denn, alle Spalten unseres Datenrahmens haben denselben Datentyp (was nicht häufig der Fall ist).
Lassen Sie uns einen neuen Datenrahmen rekonstruieren super_sleepers von der anfänglichen super_sleepers_initial und fügen Sie eine weitere Zeile hinzu:
# Reconstructing the super_sleepers dataframe
super_sleepers <- super_sleepers_initial
super_sleepers <- rbind(super_sleepers, listing('sloth', 'Peru', 17))
print(super_sleepers)
| Tier | Land | avg_sleep_hours | |
| 1 | Koala | Australien | 21 |
| 2 | Igel | Italien | 18 |
| 3 | Faultier | Peru | 17 |
Die neue Zeile wurde am Ende des Datenrahmens angehängt.
Es ist wichtig zu berücksichtigen, dass hier und in allen nachfolgenden Beispielen die neue Zeile (oder Zeilen) die Struktur des Datenrahmens widerspiegeln muss, an den sie angehängt ist, was bedeutet, dass die Länge der Liste gleich der Anzahl der Spalten in den Datenrahmen und der Nachfolge der Datentypen der Elemente in der Liste der Datentypen der Datentypen der Datentypen der Datentypen der Datentypen der Datentypen entspricht. Im anderen Fall wirft das Programm einen Fehler auf.
Verwendung nrow()
Eine andere Möglichkeit, eine einzelne Zeile an einen R -Datenrahmen anzuhängen, besteht darin, die Verwendung des nrow() Funktion. Die Syntax ist wie folgt:
dataframe(nrow(dataframe) + 1,) <- new_row
Diese Syntax bedeutet wörtlich, dass wir die Anzahl der Zeilen im Datenrahmen berechnen (nrow(dataframe)), 1 zu dieser Nummer hinzufügen (nrow(dataframe) + 1) und dann eine neue Zeile anhängen new_row in diesem Index des Datenrahmens (dataframe(nrow(dataframe) + 1,)) – dh als neue letzte Reihe.
Wie zuvor unsere new_row Muss höchstwahrscheinlich ein sein Liste eher als a VektorEs sei denn, alle Spalten des Datenrahmens haben denselben Datentyp, was nicht üblich ist.
Fügen wir unserem Tisch noch einen „Tremendous-Sleeper“ hinzu:
super_sleepers(nrow(super_sleepers) + 1,) <- listing('panda', 'China', 10)
print(super_sleepers)
| Tier | Land | avg_sleep_hours | |
| 1 | Koala | Australien | 21 |
| 2 | Igel | Italien | 18 |
| 3 | Faultier | Peru | 17 |
| 4 | Panda | China | 10 |
Wieder wurde die neue Zeile am Ende des Datenrahmens angehängt.
Verwendung add_row() von tidyverse
Was ist, wenn wir stattdessen eine neue Zeile zum Ende des Datenrahmens, sondern in einem bestimmten Index hinzufügen möchten? Zum Beispiel haben wir herausgefunden, dass Tigers täglich 16 Stunden schlafen (dh mehr als Pandas in unserer Bewertung, daher müssen wir diese Beobachtung als zweite in die Endzeile des Datenrahmens einfügen). In diesem Fall ist die Verwendung der Foundation R nicht genug, aber wir können die verwenden add_row() Funktion der tidyverse R -Paket (wir müssen es möglicherweise installieren, wenn es noch nicht installiert wird, indem wir ausgeführt werden set up.packages("tidyverse")):
library(tidyverse)
super_sleepers <- super_sleepers
nation='India',
avg_sleep_hours=16,
.earlier than=4)
print(super_sleepers)
| Tier | Land | avg_sleep_hours | |
| 1 | Koala | Australien | 21 |
| 2 | Igel | Italien | 18 |
| 3 | Faultier | Peru | 17 |
| 4 | Tiger | Indien | 16 |
| 5 | Panda | China | 10 |
Hier sollten wir Folgendes beachten:
- Wir haben dieselben Namen der Spalten in derselben Reihenfolge wie im vorhandenen Datenrahmen übergeben und ihnen die entsprechenden neuen Werte zugewiesen.
- Nach dieser Sequenz haben wir das hinzugefügt
.earlier thanOptionaler Parameter und angegeben den erforderlichen Index. Wenn wir das nicht tun würden, wird die Zeile standardmäßig zum Ende des Datenrahmens hinzugefügt. Alternativ könnten wir die verwenden.afterOptionaler Parameter und zuweisen den Index der Zeile ihm nach welche die neue Beobachtung einfügen. - Wir haben den Zuordnungsoperator verwendet
<-Um die auf den aktuellen Datenrahmen angewendeten Änderungen zu speichern.
Anhängen mehrerer Zeilen an einen Datenrahmen in R.
Verwendung rbind()
Oft müssen wir nicht eine, sondern mehrere Zeilen an einen R -Datenframe anhängen. Die einfachste Methode hier besteht wieder darin, die zu verwenden rbind() Funktion. Genauer gesagt müssen wir in diesem Fall zwei Datenrahmen praktisch kombinieren: die anfängliche und die eine, die die Zeilen enthält, die angehängt werden sollen.
dataframe_1 <- rbind(dataframe_1, dataframe_2)
Um zu sehen, wie es funktioniert, rekonstruieren wir einen neuen Datenrahmen super_sleepers von der anfänglichen super_sleepers_initialDrucken Sie es aus, um sich zu erinnern, wie es aussieht, und fügen Sie zwei neue Zeilen an das Ende hinzu:
# Reconstructing the super_sleepers dataframe
super_sleepers <- super_sleepers_initial
print(super_sleepers)
cat('nn') # printing an empty line
# Creating a brand new dataframe with the mandatory rows
super_sleepers_2 <- knowledge.body(animal=c('squirrel', 'panda'),
nation=c('Canada', 'China'),
avg_sleep_hours=c(15, 10),
stringsAsFactors=FALSE)
# Appending the rows of the brand new dataframe to the top of the present one
super_sleepers <- rbind(super_sleepers, super_sleepers_2)
print(super_sleepers)
| Tier | Land | avg_sleep_hours | |
| 1 | Koala | Australien | 21 |
| 2 | Igel | Italien | 18 |
| Tier | Land | avg_sleep_hours | |
| 1 | Koala | Australien | 21 |
| 2 | Igel | Italien | 18 |
| 3 | Eichhörnchen | Kanada | 15 |
| 4 | Tiger | Indien | 16 |
Zur Erinnerung müssen die neuen Zeilen die Struktur des Datenrahmens widerspiegeln, an den sie angehängt werden, was bedeutet, dass die Anzahl der Spalten in beiden Datenfrüchten, die Spaltennamen, deren Nachfolge und Datentypen gleich sein müssen.
Verwendung nrow()
Alternativ können wir die verwenden nrow() Funktionen, um mehrere Zeilen an einen Datenrahmen in R anzuhängen. Hier ist dieser Ansatz jedoch hier nicht empfohlen Weil die Syntax sehr ungeschickt und schwer zu lesen ist. In diesem Fall müssen wir den Begin und den Endindex berechnen. Dafür müssen wir viel mehr Manipulation mit dem machen nrow() Funktion. Technisch gesehen lautet die Syntax wie folgt:
dataframe_1((nrow(dataframe_1) + 1):(nrow(dataframe_1) + nrow(dataframe_2)),) <- dataframe_2
Lassen Sie uns unsere rekonstruieren super_sleepers aus super_sleepers_initial und hängen Sie ihnen die Zeilen des bereits vorhandenen Datenrahmens an super_sleepers_2:
# Reconstructing the super_sleepers dataframe
super_sleepers <- super_sleepers_initial
super_sleepers((nrow(super_sleepers) + 1):(nrow(super_sleepers) + nrow(super_sleepers_2)),) <- super_sleepers_2
print(super_sleepers)
| Tier | Land | avg_sleep_hours | |
| 1 | Koala | Australien | 21 |
| 2 | Igel | Italien | 18 |
| 3 | Eichhörnchen | Kanada | 15 |
| 4 | Panda | China | 10 |
Wir haben den gleichen Datenrahmen wie im vorherigen Beispiel erhalten und beobachtet, dass der vorherige Ansatz viel eleganter ist.
Verwendung add_row() von tidyverse
Schließlich können wir wieder die verwenden add_row() Funktion der tidyverse Paket. Dieser Ansatz ist flexibler, da wir die neuen Zeilen am Ende des aktuellen Datenrahmens entweder anhängen oder vor/nach einer bestimmten Zeile einfügen können, die durch seinen Index angegeben ist.
Lassen Sie uns die Beobachtungen für Faultier und Tiger zwischen Igel und Eichhörnchen im aktuellen Datenrahmen einfügen super_sleepers:
library(tidyverse)
super_sleepers <- super_sleepers
nation=c('Peru', 'India'),
avg_sleep_hours=c(17, 16),
.earlier than=3)
print(super_sleepers)
| Tier | Land | avg_sleep_hours | |
| 1 | Koala | Australien | 21 |
| 2 | Igel | Italien | 18 |
| 3 | Faultier | Peru | 17 |
| 4 | Tiger | Indien | 16 |
| 5 | Eichhörnchen | Kanada | 15 |
| 6 | Panda | China | 10 |
Beachten Sie, dass wir, um das obige Ergebnis zu erhalten, verwenden können .after=2 anstatt .earlier than=3.
Abschluss
In diesem Tutorial haben wir gelernt, wie man eine einzelne Zeile (oder mehrere Zeilen) an einen Datenrahmen in r angehängt hat – oder wie sie (oder sie) in einen bestimmten Index des Datenrahmens eingefügt werden. Insbesondere haben wir 3 Ansätze berücksichtigt: Verwenden der Verwendung der rbind() oder nrow() Funktionen der Foundation R oder der add_row() Funktion der tidyverse R -Paket. Wir haben den besten Anwendungsfällen für jede Methode und die Nuancen, die in verschiedenen Situationen berücksichtigt werden müssen, besondere Aufmerksamkeit geschenkt.
Wenn Sie mehr über die Arbeit mit DataFrames in R erfahren möchten, schauen Sie sich an So fügen Sie einem Datenrahmen in R eine Spalte hinzu (mit 18 Code -Beispielen)
