Hinzufügen neuer Zeilen zu einem Dataframe

Allgemeine Statistik mit R, die Test-Methode ist noch nicht bekannt, ich habe noch keinen Plan!

Moderatoren: EDi, jogo

Antworten
AlexWue
Beiträge: 9
Registriert: Mo Okt 29, 2018 3:46 pm

Hinzufügen neuer Zeilen zu einem Dataframe

Beitrag 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
Athomas
Beiträge: 768
Registriert: Mo Feb 26, 2018 8:19 pm

Re: Hinzufügen neuer Zeilen zu einem Dataframe

Beitrag 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)
AlexWue
Beiträge: 9
Registriert: Mo Okt 29, 2018 3:46 pm

Re: Hinzufügen neuer Zeilen zu einem Dataframe

Beitrag 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!!
Athomas
Beiträge: 768
Registriert: Mo Feb 26, 2018 8:19 pm

Re: Hinzufügen neuer Zeilen zu einem Dataframe

Beitrag 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 ...
Antworten