Datums-Lücken in Datensatz durch zusätzliche Zeilen schließen

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

Moderatoren: EDi, jogo

Antworten
Bugs
Beiträge: 7
Registriert: Sa Sep 26, 2020 11:41 am

Datums-Lücken in Datensatz durch zusätzliche Zeilen schließen

Beitrag von Bugs »

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

Re: Datums-Lücken in Datensatz durch zusätzliche Zeilen schließen

Beitrag von Athomas »

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!
Benutzeravatar
EDi
Beiträge: 1221
Registriert: Sa Okt 08, 2016 3:39 pm

Re: Datums-Lücken in Datensatz durch zusätzliche Zeilen schließen

Beitrag von EDi »

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
Bild.
Bugs
Beiträge: 7
Registriert: Sa Sep 26, 2020 11:41 am

Re: Datums-Lücken in Datensatz durch zusätzliche Zeilen schließen

Beitrag von Bugs »

?tidyr::complete
Auf den complete Befehl bin ich auch schon gestoßen.
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))
Folgender Befehl hat dann auch das gewünschte Ergebnis gebracht:

Code: Alles auswählen

df <- df %>%
complete(date2 = seq.Date(as.Date("2019-12-01"), as.Date("2019-12-31"), by="day"))
Als ich das gleiche dann aber an meinem Orginal-Datensatz ausprobiert habe, hat sich nichts getan.
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 :lol:

LG
Benutzeravatar
EDi
Beiträge: 1221
Registriert: Sa Okt 08, 2016 3:39 pm

Re: Datums-Lücken in Datensatz durch zusätzliche Zeilen schließen

Beitrag von EDi »

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