Wiederholen Sie die Zeilen von Daten.Rahmen
Möchte ich wiederholen Sie die Zeilen von Daten.Rahmen, jedes N
Zeiten. Das Ergebnis sollte eine neue data.frame
(mit nrow(new.df) == nrow(old.df) * N
) halten Sie die Datentypen der Spalten.
Beispiel für N = 2:
A B C
A B C 1 j i 100
1 j i 100 --> 2 j i 100
2 K P 101 3 K P 101
4 K P 101
So, jede Zeile wiederholt sich 2 mal und die Zeichen bleiben Zeichen, Faktoren bleiben Faktoren, Numerik bleiben, Numerik, ...
Meinem ersten Versuch verwendet gelten: apply(old.df, 2, function(co) rep(co, each = N))
, aber diese verwandelt sich meine Werte Zeichen und ich bekomme die Meldung:
A B C
[1,] "j" "i" "100"
[2,] "j" "i" "100"
[3,] "K" "P" "101"
[4,] "K" "P" "101"
Mögliche Duplikate von Wiederholen Sie die Daten.frame N-mal
InformationsquelleAutor Stefan | 2012-06-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
n.times <- c(2,4) ; df[rep(seq_len(nrow(df)), n.times),]
wenn Sie möchten, variieren die Anzahl, wie oft jede Zeile wird wiederholt.InformationsquelleAutor Josh O'Brien
Einem sauberen
dplyr
Lösung aus hierInformationsquelleAutor David Rubinger
Wenn Sie können, wiederholen Sie das ganze, oder Untermenge Sie es zuerst, dann wiederholen Sie das, dann eine ähnliche Frage kann hilfreich sein. Noch einmal:
oder einfach
InformationsquelleAutor dardisco
Den rep.Zeile-Funktion scheint manchmal machen Listen für die Spalten, die dazu führt, schlechtes Gedächtnis hijinks finden. Ich habe das folgende geschrieben, die scheint gut zu funktionieren:
InformationsquelleAutor jebyrnes
Zugabe zu dem, was @dardisco erwähnt, über
mefa::rep.data.frame()
, es ist sehr flexibel.Können Sie entweder wiederholen Sie jede Zeile N-mal:
oder wiederholen Sie den gesamten dataframe mal N (denke: wie, wenn Sie der wiederverwertung zu vektorisierte argument)
Zwei Daumen hoch für
mefa
! Ich hatte noch nie davon gehört, bis jetzt, und ich hatte zu schreiben-Handbuch-code, dies zu tun.InformationsquelleAutor smci
Referenz und indem Antworten zitieren mefa, könnte es lohnt sich, einen Blick auf die Umsetzung der
mefa::rep.data.frame()
im Fall, Sie wollen nicht das gesamte Paket:InformationsquelleAutor Fabio Gabriel
Meine Lösung ähnlich wie
mefa:::rep.data.frame
, aber ein wenig schneller und kümmert sich um die Zeile Namen:Vergleichen Lösungen:
InformationsquelleAutor Artem Klevtsov
Es ist eine schöne Vektorgrafik-Lösung, wiederholt wird, nur bestimmte Zeilen n-mal, jeden, möglich zum Beispiel durch das hinzufügen einer
ntimes
Spalte, um Ihre Daten Rahmen:Methode:
Ergebnis:
Dies ist sehr ähnlich zu Josh O 'Brien und Mark Miller' s Methode:
Jedoch, dass die Methode scheint ganz ein bisschen langsamer:
Ergebnis:
InformationsquelleAutor Adam Erickson
versuchen Sie zum Beispiel
als index
InformationsquelleAutor shhhhimhuntingrabbits
Einen anderen Weg, dies zu tun wäre, den ersten Zeilen-Indizes, fügen Sie zusätzliche Kopien der df, und dann, um durch die Indizes:
Obwohl die anderen Lösungen kann kürzer sein, dieses Verfahren kann vorteilhafter sein, in bestimmten Situationen.
InformationsquelleAutor crazjo