|
|
Aus Excel bestimmte Spalten einlesen, Regression vorbereiten |
|
DasFragezeichen |

Forum-Anfänger
|
 |
Beiträge: 32
|
 |
|
 |
Anmeldedatum: 13.12.15
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 14.12.2015, 02:07
Titel: Aus Excel bestimmte Spalten einlesen, Regression vorbereiten
|
 |
|
 |
|
Guten Abend,
seit kurzer Zeit bewege auch ich mich durch das "Matlab-Universum". Demgemäß freue ich mich über jeden kleinen Schritt, der mir gelingt. Nun habe ich jedoch eine Aufgabe erhalten, welche - so denke ich - mein bisheriges Können bei weitem übersteigt.
Folgender Sachverhalt:
Mir liegt in Kürze eine sehr umfangreiche Excel-Tabelle (mehrere 1.000 Spalten/Zeilen) vor, in welcher nur gewisse Spalten für weitergehende Berechnungen erforderlich sind. Sämtliche Spalten sind bspw. in Zeile fünf mit einer Überschrift versehen. Dabei ist nur ein Teil der besagten Überschrift jeweils relevant.
Meine erste Frage ist nun, wie ich die Überschriften in der Zeile (hier bspw. fünf) prüfen kann, ob etwa neben anderen alpha-numerischen Angaben ein bestimmter Begriff (oder mehrere) auftauchen? Ist dies der Fall soll die entsprechende Spalte in Matlab eingelesen werden.
Möglicherweise gibt es für diesen Prozess sogar eine "elegantere" Darstellung, als die aus Excel herausgefilterten (und in Matlab integrierten) Spalten alle einzeln im "Workspace" abzulegen. Als absoluter Anfänger bin ich dahingehend natürlich überfragt und freue mich selbstverständlich, wenn mein Vorhaben überhaupt (auf relativ humane Art und Weise) möglich ist.
Meine zweite Frage betrifft die Vorbereitung (und Durchführung) einer Regression.
Angenommen ich habe das vorherige Verfahren zwei Mal (für zwei verschiedene Begrifflichkeiten) angewendet..., wie kann ich anschließend die umfangreichen Angaben zu zwei jeweils unterschiedlichen Variablen (nennen wir sie "x" und "y") so zusammenfassen, dass ich eine Regression durchführen kann? Die Regression als solche sollte ich mit meinem bisherigen Wissen realisieren können (allerdings kann ich auch dies noch nicht 100%ig garantieren).
Leider habe ich - gemäß meiner obigen Fragen - nicht viel, was ich an Quellcode anbieten könnte. Somit bedanke ich mich schon einmal herzlich bei allen, die sich meiner erbarmen und mich durch das "Matlab-Dickicht" geleiten!
Viele Grüße
DasFragezeichen
|
|
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 14.12.2015, 10:29
Titel: Re: Aus Excel bestimmte Spalten einlesen, Regression vorbere
|
 |
|
 |
|
Hallo DasFragezeichen,
Im Allgemeinen ist es besser, immer nur eine Frage pro Thread zu stellen.
Kannst Du die Excel-Tabelle bereits per
xlsread
einlesen?
Danach sollte das Auswerten der Überschriften leicht möglich sein.
Zitat: |
Meine erste Frage ist nun, wie ich die Überschriften in der Zeile (hier bspw. fünf) prüfen kann, ob etwa neben anderen alpha-numerischen Angaben ein bestimmter Begriff (oder mehrere) auftauchen? |
Das funktioniert mit den Befehlen
regexp
,
strncmp(i)
,
isprop
. Eine genauere Antwort ist möglich, wenn Du exakt beschreibst, nach welchenKriterien Du suchst.
Zitat: |
Ist dies der Fall soll die entsprechende Spalte in Matlab eingelesen werden. |
Da die Tabelle ja recht handlich ist (eine Million Elemente ist für einen Menschen viel, für Matlab aber kein Problem), kannst Du einfach die gesamte Tabelle einlesen und dann die gewünschten Werte extrahieren.
Zitat: |
Möglicherweise gibt es für diesen Prozess sogar eine "elegantere" Darstellung, als die aus Excel herausgefilterten (und in Matlab integrierten) Spalten alle einzeln im "Workspace" abzulegen. |
Tausende Variablen dynamisch zu erzeugen wäre jedenfallse eine sehr schlechte Idee. Um fest zu stellen, was "eleganter" ist, muss man zunächst klären, welches Problem wie gelöst werden soll.
Zitat: |
Meine zweite Frage betrifft die Vorbereitung (und Durchführung) einer Regression.
Angenommen ich habe das vorherige Verfahren zwei Mal (für zwei verschiedene Begrifflichkeiten) angewendet..., |
Und da steige ich bereits aus: Welches "Verfahren" und was sind "Begrifflichketien"?
Gruß, Jan
|
|
|
DasFragezeichen |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 32
|
 |
|
 |
Anmeldedatum: 13.12.15
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 14.12.2015, 14:26
Titel:
|
 |
|
 |
|
Hallo Jan,
vielen Dank für Deine schnelle und hilfreiche Antwort!
Das Einlesen einer Excel-Tabelle gelingt mir bereits. Diese würde ich entweder über die von Dir besagte Funktion xlsread oder durch einen Rechtsklick auf die entsprechende Datei und dann mittels Import Data
realisieren:
Zur besseren Illustration habe ich eine Beispieltabelle beigefügt. In dieser soll die fünfte Zeile jeweils nach dem (zur besseren Darstellung) rot markierten Inhalt gesamte Kosten durchsucht werden. Wurden besagte Wörter in der entsprechenden Zeile gefunden, soll die gesamte Spalte in Matlab eingelesen werden.
Zitat: |
Tausende Variablen dynamisch zu erzeugen wäre jedenfallse eine sehr schlechte Idee. Um fest zu stellen, was "eleganter" ist, muss man zunächst klären, welches Problem wie gelöst werden soll. |
Da hast Du Recht der Horror der Unübersichtlichkeit wäre quasi nur verschoben worden.
Ich hab mir gedacht, dass die Werte der Reihe nach in einer Variable (z.B. x) zusammengefasst werden.
Zitat: |
Und da steige ich bereits aus: Welches "Verfahren" und was sind "Begrifflichketien"? |
Mit dem Verfahren meinte ich, dass ich das Einlesen der entsprechenden Spalten für einen weiteren Begriff (z. B. Umsatz) analog zu oben wiederholen wollte. Diese neuen Spalteninhalte sollen dann ebenfalls in einer Variable (z. B. y) der Reihe nach zusammengefasst werden. Das Vorgehen benötige ich wohl für meine Regression die jedoch zunächst einmal zu vernachlässigen ist.
Zitat: |
Da die Tabelle ja recht handlich ist (eine Million Elemente ist für einen Menschen viel, für Matlab aber kein Problem), kannst Du einfach die gesamte Tabelle einlesen und dann die gewünschten Werte extrahieren. |
Diese Aussage gibt mir Hoffnung!
Viele Grüße
DasFragezeichen
P.S. Gemäß Deines Wunsches werde ich einen weiteren Thread für meine Frage bzgl. der Regression erstellen.
Beschreibung: |
|
 Download |
Dateiname: |
beispieldatensatz.xls |
Dateigröße: |
31 KB |
Heruntergeladen: |
559 mal |
|
|
|
DasFragezeichen |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 32
|
 |
|
 |
Anmeldedatum: 13.12.15
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 15.12.2015, 22:30
Titel:
|
 |
Ich antworte wirklich ungerne auf meine eigenen Text, doch hat jemand eine neuerliche Antwort auf meine Frage(n)? Ich benötige dieses Wissen für meine bevorstehende Datenanalyse wirklich dringend.
Vielen Dank!
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 16.12.2015, 11:48
Titel:
|
 |
Hallo DasFragezeichen,
Hilft das weiter?
Gruß, Jan
|
|
|
DasFragezeichen |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 32
|
 |
|
 |
Anmeldedatum: 13.12.15
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 16.12.2015, 12:49
Titel:
|
 |
Hallo Jan,
Dein Code hilft mir schon SEHR VIEL weiter! Vielen Dank!
Allerdings besteht noch ein kleines Problem (vermutlich in der letzten Zeile Deiner Funktion):
Nach dieser werden interessanter Weise nicht die Ziffern der Spalten mit dem String "gesamte Kosten" eingelesen (diese werden in "match" offensichtlich korrekt erkannt), sondern die Spalte die jeweils nach der "gesamte Kosten"-Spalte folgt. Zudem werden erst die Werte ab der sechsten Zeile aus der "num"-Tabelle ausgelesen.
Für den einzulesenden Bereich aus der "num"-Tabelle habe ich daher folgende (hoffentlich korrekte) kleine Anpassung durchgeführt:
Für das erste Problem weiß ich jedoch leider keine Lösung.
|
|
|
DasFragezeichen |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 32
|
 |
|
 |
Anmeldedatum: 13.12.15
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 06.01.2016, 20:20
Titel:
|
 |
Hallo und ein frohes neues Jahr!
Mittlerweile habe ich mich mit der kleinen Problematik (Spalten wurden versetzt eingelesen) noch einmal genauer auseinandergesetzt. Demnach bin ich zu dem Schluss gelangt, dass die Datumsangaben (und ihre Formatierung aus Excel) ursächlich für die Verschiebung meines Ergebnisses sind/waren.
Matlab hat offensichtlich die einzelnen Zellen der Datumsspalte als String behandelt und sie somit aus der numerischen Tabelle entfernt. Entsprechend sind sämtliche numerische Zellen jeweils um eine Einheit nach links verschoben worden.
Diesen Fehler scheine ich nach etwas Bastelarbeit (und einiges an Recherchieren) in den Griff bekommen zu haben. Für einen Anfänger ist dies gar nicht so trivial.
Mein Ergebnis möchte ich euch natürlich nicht vorenthalten. Vielleicht hat irgendwann einmal eine ähnliche Frage und kann mit meiner kleinen Darstellung sein Problem lösen (oder zumindest eingrenzen):
Viele Grüße
DasFragezeichen
|
|
|
|
|
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.
|
|