Hallo alle,
Ich bin ein Neuling im Umgang mit leistungsfähigerer Statistiksoftware und lerne mich langsam ein. Ich bin gut darin, Feedback umzusetzen, aber nicht so gut in meiner eigenen Recherche.
Ich arbeite mit Batterien. Wir sammeln eine Menge Daten und verwenden unterschiedliche Tests, je nachdem, was wir herausfinden möchten. Die erzeugten Daten sind zyklischer Natur, da wir die Zelle aufladen, ruhen lassen, entladen und wieder ruhen lassen. Diese werden Schritte genannt.
In einem Test (ich nenne sie Läufe) haben wir möglicherweise mehrere Zyklen in einem Regime und dann mehrere Zyklen in einem anderen. Daher ist es für mich wichtig, Reaktionen (Ströme, Spannungen, Kapazitäten, Energien usw.) als Faktoren von Zyklen, Schritten sowie Läufen verfolgen zu können.
Zu meiner Frage: Ich benötige eine Spaltenformel, die bei 11 beginnt und dann alle 4 Zeilen um einen Wert von 1 erhöht wird. In dieser Spalte wird die Gesamtzahl der Zyklen über mehrere Durchläufe hinweg verfolgt. Der Grund, warum es um 4 erhöht werden muss, liegt darin, dass jeder Zyklus so viele Schritte umfasst.
Zur weiteren Verdeutlichung möchte ich ein Beispiel geben.
Spalte 1 trägt die Bezeichnung „Ausführen“. Es verfolgt die Nummer eines bestimmten Tests in Serie.
Spalte 2 trägt die Bezeichnung „Gesamtzykluszahl“. Dies ist die Spalte, die ich richtig codieren muss.
Spalte 3 trägt die Bezeichnung „Tatsächliche Zyklusnummer“. Es beschreibt die Zyklusnummer eines bestimmten Tests. Diese Werte sind zyklisch und gehen zu Beginn jedes neuen Laufs auf 1 zurück. Ihre Obergrenze ist nicht konsistent. Die Werte wiederholen sich auch abhängig von der Anzahl der Schritte in jedem Zyklus. Ein Beispiel für die Werte wäre 1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,1,1,1,1,2,2 ,2,2 usw.
Spalte 5 trägt die Bezeichnung RawStepID. Zu Beginn jedes Zyklus wird es auf 1 zurückgesetzt. Ein Beispiel wäre 1,2,3,4,1,2,3,4,1,2,3,4 usw.
Spalte 6+ enthält alle erhaltenen Daten.
Bisher bestand mein Ansatz für Spalte 2 darin, eine IF-Anweisung mit einer lokalen Variablen vorzubereiten. Ich möchte, dass diese Variable jedes Mal um den Wert 1 erhöht wird, wenn RawStepID == 1 ist. Ich möchte, dass es bei 11 beginnt, dann 12 wird, wenn RawStepID=1 ist, beim nächsten Mal 13 wird, wenn RawStepID=1 ist usw. Dann brauche ich die Formel, um den aktuellen Wert der Variablen anzuzeigen.
Das heißt, wenn ich die Daten verwende, die ich für Spalte 3 eingegeben habe, benötige ich die Werte dieser Spalte
11,11,11,11,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,17, 17,17,17,18,18,18,18 usw.
Ich hoffe, das ist klar. In der Zwischenzeit werde ich versuchen herauszufinden, wie man eine Tabelle in einen Forumsbeitrag einfügt, wie ich es bei anderen Mitgliedern gesehen habe, oder wie ich, wenn das nicht gelingt, eine Dummy-Tabelle erstelle, die ich hier anhängen kann.
Danke,
ScaredAntilope.
Hallo @ich h ,
Danke schön! Der zweite von Ihnen angegebene Ansatz ist genau das, was ich umzusetzen versuchte. Ich werde nicht verraten, wie mein Code aussah, aber ich kann Ihnen versichern, dass es Spaghetti der überkochtesten Sorte waren.
Wenn ich das richtig verstehe, ist es auch eine sehr flexible Lösung. Ich kann die Startnummer der Zeile ändern, indem ich die 11 in Zeile 2 ändere, ich kann die Inkrementierung ändern, indem ich die Verzögerung der Gesamtzykluszahl am Ende von Zeile 3 ändere, und ich kann sehen, wie ich diesen Code anpassen kann, um z. B. die zu erhöhen Führen Sie den Wert jedes Mal aus, wenn die tatsächliche Zyklusnummer auf 1 zurückgeht.
If(
Row() == 1, 23,
:ActualCycleNumber == 1 & Lag ( :ActualCycleNumber ) != 1, Lag ( :Run ) + 1,
Lag ( :Run )
)
Ich verstehe die Auswirkung der zweiten Bedingung für die Erhöhung der Gesamtzykluszahl nicht. Oder wie man Lag im Allgemeinen nutzt. Könnten Sie mir eine gute Quelle zum Erlernen solcher Prinzipien erklären oder mich darauf hinweisen?
Hallo @statman
Das ist in diesem speziellen Szenario der Fall, ja. Allerdings verwende ich die Gesamtzykluszahl häufig in Abfragen, um Daten über mehrere Durchläufe hinweg zu verfolgen. So könnte ich beispielsweise diese Tabelle speziell für Lauf 1 und eine weitere Tabelle für Daten speziell für Lauf 2 haben. In beiden Fällen beginnt die tatsächliche Zykluszahl bei 1 und steigt bis zu einem beliebigen Wert (im Test definiert). Die Gesamtzykluszahl beginnt jedoch mit der kumulativen Summe der tatsächlichen Zyklenzahlen, die diese Batterie bei allen Läufen erlebt hat.
Eine andere Sichtweise besteht darin, dass die tatsächliche Zykluszahl die Rohdaten sind, die ich von meiner experimentellen Software erhalte, während es sich bei der Gesamtzykluszahl um verarbeitete Daten handelt. Und noch ein letztes Beispiel:
Lauf 1 umfasst 30 Zyklen. In diesem Fall beginnen sowohl die Gesamtzykluszahl als auch die tatsächliche Zykluszahl bei 1 und enden bei 30. Lauf 2 enthält 15 Zyklen. Die Gesamtzykluszahl beginnt bei 31 und endet bei 45. Die tatsächliche Zyklusnummer beginnt bei 1 und endet bei 15. Lauf 3 enthält 102 Zyklen. Die Gesamtzahl beginnt bei 46, endet bei 147, die tatsächliche Zahl beginnt bei 1 und endet bei 102 usw. usw. Oft geschieht diese Art der Inkrementierung innerhalb derselben Datentabelle. Das Verfolgen der Gesamtzahl der Zyklen über alle Läufe hinweg ist für die Analyse sehr nützlich, da dies einer der Schlüsselfaktoren für den Batteriezustand ist.
Ich hoffe, das klärt meinen Bedarf an den Daten, so wie sie sind!
Welche Fragen versuchen Sie zu beantworten? Ein kurzer Blick: Spalte 2 (11,11,11,11,12...) wird mit Spalte 1 (1,1,1,1,2...) verwechselt, sodass dies nicht nützlich wäre. Jede Spalte sollte ein eindeutiges X oder Y sein.
Hallo @ScaredAntelope ,
Zwei Möglichkeiten, wie Sie Spalte 2 „Gesamtzykluszahl“ angehen könnten, könnten darin bestehen, sie explizit nach Zeile zu definieren:
11 + Floor( (Row() - 1) / 4 )

oder berechnen Sie es so, wie Sie es meiner Meinung nach jetzt machen:
If(
Row() == 1, 11,
:RawStepID == 1 & Lag( :RawStepID ) != 1, Lag( :Total Cycle Number ) + 1,
Lag( :Total Cycle Number )
)

Beachten Sie die beiden Bedingungen, die erforderlich sind, um die Gesamtzykluszahl in der mittleren Bedingung zu erhöhen. Sie können dies erweitern, um auch andere Spalten zu überprüfen. Beispielsweise sollte die tatsächliche Zyklusnummer möglicherweise auch 1 sein.