Hallo,
ich habe folgendes Problem:
Ich habe einen Datensatz mit Unternehmen und Zeitpunkten des Monats Dezember, an denen eine Preisänderung im Unternehmen stattgefunden hat.
Beispiel:
Spalte 1: Unternehmens-ID (character)
Spalte 2: Datum + Uhrzeit (POSIXct)
Der Datensatz ist sehr groß. Es handelt sich um 15.895 Unternehmen. Für die meisten Unternehmen gibt es mehrere Preisänderungen pro Tag (ca. 10-20). Allerdings gibt es auch einige wenige Unternehmen, die z.B. im ganzen Monat nur 5 Preisänderungen haben, sodass für dieses Unternehmen also nur diese 5 Tage (5 Zeilen) im Datensatz auftauchen.
Gibt es nun eine Möglichkeit für Fälle wie diesen zusätzliche Zeilen mit den Daten zu kreieren, an denen es keine Preisänderung gab, sodass jedes Unternehmen mindestens 1 Zeile für jeden Tag besitzt (mindestens 31 Zeilen pro Unternehmen)?
Danke im Voraus
Datums-Lücken in Datensatz durch zusätzliche Zeilen schließen
Re: Datums-Lücken in Datensatz durch zusätzliche Zeilen schließen
Ich gehe davon aus, dass Du nicht Dein "wahres" Problem zur Diskussion stellst, sondern einen (von Dir als zielführend angesehenen) Schritt zur Lösung dieses Problems!
Ist es möglich, dass Du "eigentlich" wissen möchtest, welchen Preis die Unternehmen zu vorgegebenen Zeitpunkten verlangt haben?
Und: bitte stell Spieldaten zur Verfügung, damit man die Tipps direkt ausprobieren/demonstrieren kann!
Ist es möglich, dass Du "eigentlich" wissen möchtest, welchen Preis die Unternehmen zu vorgegebenen Zeitpunkten verlangt haben?
Und: bitte stell Spieldaten zur Verfügung, damit man die Tipps direkt ausprobieren/demonstrieren kann!
Re: Datums-Lücken in Datensatz durch zusätzliche Zeilen schließen
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.
Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
.
Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
.
Re: Datums-Lücken in Datensatz durch zusätzliche Zeilen schließen
Auf den complete Befehl bin ich auch schon gestoßen.?tidyr::complete
Hier ein Beispiel zum Aufbau meines Datensatzes:
Die meisten Unternehmen sehen aus wie das Unternehmen ABC1234 (mehrere Einträge pro Tag)
Komplettieren möchte ich jetzt die Fälle, die so aussehen wie das Unternehmen DEF5678.
Code: Alles auswählen
date ID
1 2019-12-01 00:00:04 ABC1234
2 2019-12-01 06:05:08 ABC1234
3 2019-12-01 11:18:51 ABC1234
4 2019-12-02 04:01:22 ABC1234
5 2019-12-02 10:44:17 ABC1234
6 2019-12-03 12:01:30 ABC1234
7 2019-12-03 14:20:06 ABC1234
...
93 2019-12-02 22:13:05 DEF5678
94 2019-12-15 05:44:02 DEF5678
95 2019-12-16 13:14:22 DEF5678
96 2019-12-22 07:12:34 DEF5678
97 2019-12-30 19:02:51 DEF5678
98 2019-12-01 10:08:11 GHI9999
99 2019-12-01 12:48:12 GHI9999
...
Ich habe mal zum Testen ein subset mit einem Unternehmen, das nur 6 Tage mit Preisänderungen hat, erstellt.
Diesem habe ich eine neue Spalte "date2" hinzugefügt, die sich aus der POSIXct Spalte nur das Datum zieht.
Mit folgendem Befehl:
Code: Alles auswählen
df <- df %>%
mutate(date2 = as.Date(date))
Code: Alles auswählen
df <- df %>%
complete(date2 = seq.Date(as.Date("2019-12-01"), as.Date("2019-12-31"), by="day"))
Eventuell liegt es daran, dass in diesem alle Daten vom 01.12. bis zum 31.12. vorkommen (nur eben nicht für jedes Unternehmen) und R deshalb nicht weiß, was es komplettieren soll?
Ich denke grundsätzlich ist tidyr::complete aber der richtige Weg.
Wenn jemand eine Idee hat, wie das auch für den Original-Datensatz klappen kann, gerne her damit
LG
Re: Datums-Lücken in Datensatz durch zusätzliche Zeilen schließen
Bitte ein reproduzierbares Beispiel posten.
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.
Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
.
Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
.