|
|
Problem mit Sortierung eines Datensatzes |
|
matlabbrig |

Forum-Fortgeschrittener
|
 |
Beiträge: 52
|
 |
|
 |
Anmeldedatum: 17.06.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 17.06.2012, 16:54
Titel: Problem mit Sortierung eines Datensatzes
|
 |
|
 |
|
Hallo liebes Forum,
ich bin neu hier und habe gleich einige Fragen.
Folgender Sachverhalt: Ich habe einen Datensatz voller Zeitreihen. Es handelt sich dabei um einige Unternehmen, für die ich über einige Jahre hinweg einige Daten in verschiedenen Kategorien vorliegen habe.
Spalte 1 beinhaltet dabei die Firmen-ID, also 1, 2...x. Dummerweise sind in dem Datensatz alle Daten pro Unternehmen und Kategorie in einer Spalte von mehreren 100.000 Zeilen Länge einfach untereinander abgelegt, und es sind auch viele NaNs dabei.
Was ich vorhabe: Ich brauche eine Matrix, die mir den entsprechenden Wert einer Kategorie, zB Aktienkurs, pro Unternehmen (Spalte) und Tag (Zeile) angibt:
Tag 1 Tag 2 Tag 3...
U1 Kurs 1 Kurs 2 Kurs 3...
U2
U3
Leider sind die Zeitreihen pro Unternehmen auch unterschiedlich lang, sodass ich die längste Zeitreihe als Maßstab für die Matrixbreite nehmen will. Ich habe vor mir eine Matrix voller NaNs zu basteln die die Dimensionen [Anzahl Unternehmen x Anzahl Tage längster Zeitreihe] hat, und diese dann wie oben beschrieben mit den Daten auffüllen zu lassen. Somit würde bei nicht vorhandenen Daten in der Zielmatrix ein NaN stehenbleiben.
Kann mir irgendjemand sagen wie genau er das anpacken würde? Ich verheddere mich bisher bei allen Ansätzen irgendwann in Zählschleifen usw...
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 17.06.2012, 18:16
Titel:
|
 |
Hallo,
ich zumindest blicke hier nicht durch.
Ein kleiner Beispieldatensatz, anhanddessen ersichtlich ist, was du hast und was du willst, könnte helfen.
Grüße,
Harald
|
|
|
matlabbrig |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 52
|
 |
|
 |
Anmeldedatum: 17.06.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 17.06.2012, 19:09
Titel:
|
 |
|
 |
|
Das dachte ich mir
Also: mein Datensatz sieht grob wie folgt aus:
ID---Beobachtungsanzahl--Aktienkurs .... PD...
1------------1-----------------100------------0.010
1------------2-----------------101------------0.011
1------------3-----------------100------------0.012
.
.
.
2------------3000-------------50-------------0.20
2------------3001-------------55------------ 0.18
.
.
.
Es befinden sich also zB alle Aktienkurse aller Unternehmen in der Spalte Aktienkurs, zB 2999 für U1, dann wechselt die ID auf Unternehmen 2, die Beobachtungsanzahl geht aber nahtlos weiter. Pro Unternehmen liegen unterschiedlich viele Beobachtungszeitpunkte vor.
Ich brauche einen Weg, dies in eine Matrix zu überführen, die die Spalte PD enthält, sowie die Anzahl der Beobachtungszeitpunkte, allerdings ab 1 beginnend und synchron für alle Unternehmen:
ID-------Tag 1-------Tag 2---------Tag 3-------Tag n
1-------- 0.10--------0.11-----------0.12---------PDn(U1)
2---------0.20--------0.18-------------------------PDn(U2)
3
.
.
.
n----------------------------------------------------PDn(Un)
Ist es vielleicht ein wenig klarer geworden?
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 17.06.2012, 20:17
Titel:
|
 |
Hallo,
wie liegt der Datensatz gegenwärtig vor? Excel, TXT, oder schon in MATLAB importiert?
Unterscheiden sich nur die Endpunkte der Beobachtungen, oder gibt es Lücken bzw. unterschiedliche Startpunkte? Falls letzteres, wie kann die Zuordnung von bespielsweise 3001 zu 1 erfolgen?
Grüße,
Harald
|
|
|
matlabbrig |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 52
|
 |
|
 |
Anmeldedatum: 17.06.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 17.06.2012, 20:21
Titel:
|
 |
Er ist schon importiert, Lücken gibt es reichlich in Form von NaNs. Die einzige Möglichkeit der zeitlichen Zuordnung ist die Unternehmens-ID, also jeweils bei der ersten Beobachtung des nächsten Unternehmens die neuen Daten holen...
Grüße
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 17.06.2012, 20:28
Titel:
|
 |
Hallo,
das beantwortet noch nicht meine Frage. Du sagst ja, du hast unterschiedlich viele Beobachtungspunkte pro Unternehmen. Wie sollen die Datenpunkte dann zu gleichen Zeitpunkten zugeordnet werden?
Grüße,
Harald
|
|
|
matlabbrig |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 52
|
 |
|
 |
Anmeldedatum: 17.06.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 18.06.2012, 12:32
Titel:
|
 |
Ich stelle mir das so vor: Gehen wir der Einfachheit halber mal von zwei Unternehmen aus, U1 mit 3000 Beobachtungen, U2 mit 2500.
Jetzt würde ich also eine 3000x2-Matrix voller NaNs erzeugen, in deren erste Zeile dann die 3000 Beobachtungen von U1 geschrieben werden. In die zweite Zeile kommen die 2500 Beobachtungen von U2, auch einfach beginnend in Spalte 1. Die 500 Werte die U2 weniger hat als U1 bleiben in der Zielmatrix als NaNs bestehen.
|
|
|
_Peter_ |

Moderator
|
 |
Beiträge: 537
|
 |
|
 |
Anmeldedatum: 08.12.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 7.10, 2010a
|
 |
|
|
 |
|
Verfasst am: 18.06.2012, 12:55
Titel:
|
 |
Und da ist das Problem, auf welches Harald dich hinweisen möchte.
Woher weiß man wo die NaN's stehen bleiben? Am Anfang der Zeile nacheinander? Am Ende der Zeile nacheinander? Zwischendrin immer wieder verteilt?
Woher weiß man wann die Beobachtungspunkte aufgenommen wurden? Oder gehst du davon aus, dass alle Zeitgleich gestartet sind und alle im gleichen regelmäßigen Abstand (täglich) aufgenommen wurden? Dann wäre die Frage zu klären, warum du unterschiedlich viele Punkte hast...
_________________
Gruß
Peter
_________________
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht? Oder der MATLAB Hilfe?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
|
|
|
matlabbrig |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 52
|
 |
|
 |
Anmeldedatum: 17.06.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 01.07.2012, 13:34
Titel:
|
 |
|
 |
|
Oha, die E-Mail-Benachrichtigung über deine Antwort, _Peter_, ist wohl im Nirwana verschwunden, deswegen gucke ich erst jetzt wieder hier rein Sorry.
Naja, es gibt im ganzen Datensatz eine Variable die - rein technisch gesehen - für alle Unternehmen gleich ist, nämlich der Zinssatz.
Problem: Idiotischerweise startet die Zeitreihe bei Tag 1, U1 nicht mit einem Kalenderdatum, der Zahl 1 oder sonst etwas sinnvollem, sondern mit 730636 und zählt dann über alle Tage und alle Unternehmen einfach hoch, allerdings mit Lücken. (siehe Bild)
Da ich nicht weiß ob das Startdatum für alle gleich ist, war meine Idee den Zinssatz zu verwenden, um dort das Maximum pro Zeitreihe einer Bank zu finden (es gibt einen einzigen Maximalwert der sich nicht wiederholt innerhalb einer Zeitreihe), und anhand dieses Wertes die Zeitreihen zueinander zu justieren.
Haltet ihr das für sinnvoll, und ist es ohne maximalen Aufwand möglich? Wenn ja, wie?
Danke
Beschreibung: |
|
 Download |
Dateiname: |
matlab.jpg |
Dateigröße: |
217.22 KB |
Heruntergeladen: |
400 mal |
|
|
|
matlabbrig |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 52
|
 |
|
 |
Anmeldedatum: 17.06.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 01.07.2012, 15:54
Titel:
|
 |
Nachtrag: So sehen z.B. die Zins-Zeitreihen der ersten 3 Unternehmen aus:
Beschreibung: |
|
 Download |
Dateiname: |
euribor.jpg |
Dateigröße: |
66.64 KB |
Heruntergeladen: |
392 mal |
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 01.07.2012, 18:51
Titel:
|
 |
Hallo,
in MATLAB werden Datumsangaben oft numerisch als Tage gezählt von 1.1.0 dargestellt. Das finde ich persönlich sehr sinnvoll, und ich würde stark vermuten, dass diese Zahlen bei dir genau diese Bedeutung haben:
Verwunderlich wäre es allerdings, wenn sich diese Zahlen tatsächlich im Laufe der Daten bei verschiedenen Unternehmen nicht wiederholen.
Grüße,
Harald
|
|
|
matlabbrig |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 52
|
 |
|
 |
Anmeldedatum: 17.06.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 01.07.2012, 19:24
Titel:
|
 |
Harald hat Folgendes geschrieben: |
Hallo,
in MATLAB werden Datumsangaben oft numerisch als Tage gezählt von 1.1.0 dargestellt. Das finde ich persönlich sehr sinnvoll, und ich würde stark vermuten, dass diese Zahlen bei dir genau diese Bedeutung haben:
Verwunderlich wäre es allerdings, wenn sich diese Zahlen tatsächlich im Laufe der Daten bei verschiedenen Unternehmen nicht wiederholen.
Grüße,
Harald |
Hallo Harald,
darauf bin ich vorhin schon von selbst gekommen, hatte meinen Post eigentlich auch editiert Danke aber trotzdem
Die Daten als String vorliegen zu haben hilft mir allerdings bei einer "automatisierten" Sortierung auch net wirklich weiter...
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 01.07.2012, 23:00
Titel:
|
 |
Hallo,
ich würde die Datumsangaben zum Sortieren auch nicht in Strings umwandeln, im Gegenteil.
Ein aussagekräftiger Beispieldatensatz (wie von heute, 13:34, aber von drei Unternehmen --- es müssen ja nicht jeweils die ganzen Daten sein) würde helfen. Vor allem bitte den Datensatz als .mat zur Verfügung stellen, sonst kann man das nicht testen.
Grüße,
Harald
|
|
|
matlabbrig |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 52
|
 |
|
 |
Anmeldedatum: 17.06.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 01.07.2012, 23:22
Titel:
|
 |
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 02.07.2012, 17:20
Titel:
|
 |
Hallo matlabbrig,
Nun ist das RAR-Format nicht besondern weit verbreitet, aber die meisten Unpacker können das dennoch handhaben. Allerdings ist an meiner Arbeitsstelle aus Datenschutzgründen der Zugriff auf DropBox verboten.
Der Thread ist schon ziemlich lang und ich verstehe das eigentliche Problem immer noch nicht und komme an Beispieldaten nicht heran.
Gruß, Jan
|
|
|
|
Gehe zu Seite 1, 2, 3 Weiter
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2025
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|