Seite 1 von 1

Hinzufügen neuer Zeilen zu einem Dataframe

Verfasst: Mo Okt 29, 2018 4:00 pm
von AlexWue
Hallo zusammen,

ich bräuchte für eine Masterarbeit mal etwas Hilfe...
und zwar möchte ich von einer Tabelle jede Zeile vervielfachen, allerdings um einen bestimmten Wert, der für jede Zeile unterschiedlich sein kann. Die Anzahl, wie oft ich die entsprechende Zeile vervielfacht haben möchte, steht in einer Spalte.
Als Beispiel zur Verdeutlichung (in Spalte "e" steht hier, wie oft ich jede Zeile haben möchte).

. a b c d e
1 x x x x 3
2 x x x x 5
3 x x x x 2

Daraus möchte ich dann folgende Tabelle erstellen:

. a b c d e
1 x x x x 3
1 x x x x 3
1 x x x x 3
2 x x x x 5
2 x x x x 5
2 x x x x 5
2 x x x x 5
2 x x x x 5
3 x x x x 2
3 x x x x 2

Zusätzlich sollten die neu erstellten Zeilen markiert werden, damit sich diese von den bereits bestehenden klar unterscheiden lassen (also z.b. statt der Bezeichnung der ersten drei Zeilen mit 1 dann 1, 1.1 und 1.2).


Ich hoffe, das war verständlich. Über jegliche Ratschläge würde ich mich sehr freuen!


Viele Grüße
Alex

Re: Hinzufügen neuer Zeilen zu einem Dataframe

Verfasst: Mo Okt 29, 2018 7:24 pm
von Athomas
Gut googeln ist auch gut:

Code: Alles auswählen

DF          <- data.frame(ID=1:3, matrix(runif(15), ncol=5), Anzahl=c(3,5,2))
Ergebnis    <- DF[rep(seq(1, nrow(DF)), DF$Anzahl), ]
Ergebnis$ID <- row.names(Ergebnis)

Re: Hinzufügen neuer Zeilen zu einem Dataframe

Verfasst: Di Okt 30, 2018 9:25 am
von AlexWue
ich hab in google nur das hier gefunden:

Code: Alles auswählen

DF2 <- DF[rep(1:nrow(DF),each=DF$Anzahl),]
und damit hat es nicht geklappt, Fehlermeldung war "first element used of 'each' argument"

hätte ich vielleicht dazu schreiben sollen, sorry...

Mit deiner Lösung hat es jedenfalls geklappt, vielen Dank für die schnelle Hilfe!!

Re: Hinzufügen neuer Zeilen zu einem Dataframe

Verfasst: Di Okt 30, 2018 9:47 am
von Athomas
Wenn man sich die Beschreibung von "rep" anguckt, sieht man, dass der Parameter "each" nicht in Frage kommt - das ist eine Ganzzahl, die einen einheitlichen Wiederholungsfaktor für jedes zu wiederholende Element angibt...

Deine "Fehlermeldung" ist also lediglich ein warning, das daraus resultiert, dass er viele Werte für "each" bekommt, aber nur den ersten nutzt.
Er macht also was, aber nicht das Gewünschte...

Die Bemerkung hatte ich aber hauptsächlich deshalb hinzugefügt, weil ich mich nicht mit fremden Federn schmücken wollte ...