Hallo,
Ich versuche, einen Index einzurichten, der nach einer Gruppe oder einer Reihe von Zeilen aufgelistet wird. Ich habe ein Bild angehängt, um zu erklären, was ich erreichen möchte.
Wie Sie auf dem Bild sehen können, versuche ich, den Index basierend auf der Gruppe von Schritten zu erhalten. Die Schwierigkeit hier oder was ich schwierig finde, ist, dass die Anzahl der Instanzen, die jeder Schritt für jede Gruppe erwähnt, variieren kann und es Lücken gibt, in denen keine aufgeführt sind.

Dies ist, was ich verwendet habe, um die Ergebnisse zu erhalten, die in: Achieved_Index gezeigt werden, aber was ich wirklich suche, sind Ergebnisse wie in: Expected_Index
dt = Data Table("sample");
dt << New Column( "Achieved_Index", Numeric( ) );
x = 1;
For Each Row( If( :StepName == "",
:Achieved_Index = 0,
If( Lag(:StepName, -1) != "" | :StepName == "STEP3",
:Achieved_Index = x,
x = x + 1
)
)
);Das ultimative Ziel ist es, dass diese Indexspalte korrekt funktioniert. Richten Sie dann die Flag-Spalte ein, um die Halbwertszeit oder den letzten Schritt für jede Gruppe zu identifizieren, wenn nur zwei Instanzen vorhanden sind. Ich habe nicht wirklich viel darüber nachgedacht, abgesehen davon, dass ich möglicherweise die Anzahl der einzelnen Schritte für jeden Index durch 2 dividiert habe, als diesen Wert für meine Lag () - Funktion zu verwenden. Anregungen hierzu wäre auch dankbar, danke!
Mit der folgenden Formel erhalten Sie die gewünschten Antworten
If( Row() == 1, step = 0 );
If( :stepName != "" & Lag( :stepName ) == "" | Row() == 1,
step
++);
If( :stepName != "", step, 0 );
txnelson, danke für die hilfe. Dies half mir, dorthin zu gelangen, wo ich es brauchte.
Dies ist der Code, der das ausgeführt hat, wonach ich gesucht habe:
For Each Row(
If( Row() == 1, step = 0);
If(Row() == 1 & :StepName != "", step = 1);
If( :StepName != "" & Lag( :StepName ) == "",
:Achieved_index = step++);
If( :StepName != "", :Achieved_index = step, :Achieved_index = 0 );
);
Ich musste ein paar Änderungen / Ergänzungen vornehmen, denn obwohl ich es einen Index nenne, wollte ich bei 1 beginnen.
Ich musste auch eine zusätzliche If-Anweisung hinzufügen, denn wenn die erste Zeile Folgendes hätte: StepName == "", würde dies die Zählung beeinträchtigen.