Formel zur Verwendung des vorherigen Werts, falls dieser nicht fehlt. Andernfalls wird der Wert aus der letzten belegten Zelle verwendetIch versuche, eine Formel in Spalte 3 zu schreiben, die den aktuellen Wert von Spalte 1 mit dem verzögerten Wert von Spalte 2 addiert, aber ich stoße auf ein Problem mit der Frage, wie ich die letzte Beobachtung aus Spalte 2 übertragen kann, wenn fehlende Daten auftreten um diesen Wert beim ersten Vorkommen nicht fehlender Daten zu verwenden.Das ist,
If( !IsMissing( Col1)
Col1 + Lag(Col2,1);
//create variable that contains current Col2 value;
//Else
Col1 + previously stored value from Col2;
);
Ich würde mich über Vorschläge freuen, wie ich das am besten bewerkstelligen kann.Danke.
| Reihe# |
Spalte1 |
Spalte2 |
Spalte3 |
|---|
| 1 |
2 |
1 |
|
| 2 |
1 |
3 |
2 |
| 3 |
1 |
5 |
4 |
| 4 |
2 |
7 |
7 |
| 5 |
. |
. |
|
| 6 |
. |
. |
|
| 7 |
. |
. |
|
| 8 |
2 |
8 |
9 |
| 9 |
2 |
9 |
10 |
| 10 |
1 |
11 |
10 |
| 11 |
. |
. |
|
| 13 |
. |
. |
|
| 14 |
2 |
12 |
13 |
| 15 |
2 |
13 |
14 |
| 16 |
1 |
14 |
14 |
| 17 |
2 |
15 |
16 |
Betreff: Formel zur Verwendung des vorherigen Werts, wenn dieser nicht fehlt, ansonsten Wert aus der letzten belegten Zelle verwendenVielen Dank, Jerry, für deine tolle Erklärung und dafür, dass du meine nächste Frage zur Einbindung der IDs vorweggenommen hast!
Betreff: Formel zur Verwendung des vorherigen Werts, wenn dieser nicht fehlt, ansonsten Wert aus der letzten belegten Zelle verwendenEs tut mir leid, dass ich in meiner vorherigen Antwort keine nähere Erklärung gegeben habe. Damit die Formel für Ihre Datentabelle funktioniert, ändern Sie zunächst die Spalte „Datum“ in den „If“-Anweisungen in „Biopsieergebnis“ und das Argument „Stunde“ in der Funktion „Datumsdifferenz“ in das gewünschte Intervall (z. B. „Tag“). 
If( Row() == 1,
nm = Loc Nonmissing( :Biopsy Result << get values );
.;
,
If( Is Missing( :Biopsy Result ),
.,
Try( Date Difference( :Date[nm[Contains( nm, Row() ) - 1]], :Date, "Day" ) )
)
)
Nun zur Erklärung. Die vorhandenen Formeln indizieren nicht automatisch vorwärts oder rückwärts, bis sie nicht fehlende Daten finden. Deshalb habe ich auf Skripte zurückgegriffen, um Variablen zu erstellen, die die benötigten Informationen enthalten. Wenn Sie mehr über Scripting erfahren möchten, sind die Hilfe->Bücher->Scripting-Anleitungen und der Hilfe->Scripting-Index tolle Ressourcen.
Die Anweisung „:Biopsy Result<
Wenn als nächstes das Biopsieergebnis fehlt, wird das Ergebnis auf „fehlend“ gesetzt. Andernfalls müssen wir für die Berechnung der Datumsdifferenz auf das vorherige, nicht fehlende Datum verweisen. Contains(nm, Row()) findet die Position der aktuellen Zeile in der „nm“-Matrix. Subtrahieren Sie 1 davon, um die Position der vorherigen Zeile in der „nm“-Matrix zu ermitteln. Dies ist nun der Index, also die Zeilennummer, für den Datumswert in der Zeile mit dem vorherigen, nicht fehlenden Biopsieergebnis. Die Funktion „Versuchen“ ignoriert den von der Funktion „Datumsdifferenz“ generierten Fehler, wenn keine vorherige, nicht fehlende Zeile vorhanden ist (z. B. die erste Instanz eines Biopsieergebnisses).
Beachten Sie Folgendes: Dies setzt voraus, dass Ihre Daten innerhalb der ID-Nummer nach Datum sortiert sind (wie in Ihrem Beispiel). Wenn Ihre Datentabelle mehrere ID-Nummern enthält, möchten Sie möglicherweise eine weitere Bedingung hinzufügen, damit Sie nicht zwei verschiedene IDs vergleichen. In diesem Fall könnte Ihre Formel/Ihr Skript etwa so aussehen:
If( Row() == 1,
nm = Loc Nonmissing( :Biopsy Result << get values );
.;
,
If( Is Missing( :Biopsy Result ),
.,
If( :ID # == :ID #[nm[Contains( nm, Row() ) - 1]],
Try( Date Difference( :Date[nm[Contains( nm, Row() ) - 1]], :Date, "Day" ) ),
.
)
)
)
Ich weiß, das sind viele Informationen, aber Sie sagten, Sie seien „gespannt darauf, das zu erfahren“ ... ich hoffe, das hilft.
Betreff: Formel zur Verwendung des vorherigen Werts, wenn dieser nicht fehlt, ansonsten Wert aus der letzten belegten Zelle verwendenVielleicht finden Sie das Datentabellen-Tools Add-in hilfreich für solche Fälle.
Betreff: Formel zur Verwendung des vorherigen Werts, wenn dieser nicht fehlt, ansonsten Wert aus der letzten belegten Zelle verwendenDanke Jerry. Das scheint genau das zu sein, was ich brauche.
Leider bin ich ein Neuling in diesem Bereich und brauche immer noch Hilfe, um herauszufinden, wie ich das selbst in meiner eigenen Datenbank und im Formeleditor nachbilden kann. Ich habe eine sehr vereinfachte Version der Spalte, die für einen einzelnen Patienten in meinen Daten von Interesse ist, angehängt.
In meiner Datenbank gibt es viele Datenzeilen mit Laborwerten, die wir verfolgen, allerdings enthalten nur einige der Zeilen ein Biopsieergebnis. Ich möchte eine Formel erstellen, die die Daten in der Spalte „Daten“ verwendet, um den Datumsunterschied zwischen den Biopsien zu berechnen, wann immer sie stattfinden.
Leider verstehe ich nicht, welche Funktionen Sie zum Erstellen Ihrer Formel verwendet haben ... zum Beispiel ... obwohl ich, wenn ich die Funktion „Fehlt“ schon oft verwendet habe, nicht einmal die Option „Loc Nonmissing“ sehe der Formeleditor.
Und was bedeutet „nm“? Ich gehe von „etwas Matrix“ aus, aber wo finde ich das im Formeleditor?
Entschuldigen Sie den Aufwand, aber ich bin gespannt darauf, das zu lernen, da es genau das zu sein scheint, was ich brauche.
Danke noch einmal,
CW
Betreff: Formel zur Verwendung des vorherigen Werts, wenn dieser nicht fehlt, ansonsten Wert aus der letzten belegten Zelle verwendenLeider kann ich die von Ihnen bereitgestellte Beispieltabelle nicht sehen. Die beigefügte Datei könnte Ihnen jedoch eine Idee für einen Ansatz geben, mit dem Sie die Differenz zwischen dem aktuellen und dem vorherigen nicht fehlenden Datum ermitteln können.
Die Formel in der zweiten Spalte erstellt zunächst eine Zeilenmatrix für die nicht fehlenden Zellen in der Spalte „Datum“. Dies bietet eine Möglichkeit, auf die vorherige, nicht fehlende Zeile zu verweisen, die als Index in der Funktion „Datumsdifferenz“ verwendet wird.
Ich bin sicher, es gibt noch andere Ideen dafür ...
Betreff: Formel zur Verwendung des vorherigen Werts, wenn dieser nicht fehlt, ansonsten Wert aus der letzten belegten Zelle verwendenMir fällt es schwer, die Frage zu stellen: Was ist der Datumsunterschied zwischen zwei verschiedenen Biopsien (Spalte mit der Bezeichnung TCMR) für einen bestimmten Patienten (Punktnummer in der ersten Spalte) in meiner Datenbank? Die Biopsien erfolgen in unregelmäßigen Abständen und das Ergebnis der Biopsie ist in der dritten Spalte unten dargestellt.
Obwohl ich weiß, wie ich diese Informationen abrufen kann, indem ich einfach eine Teilmenge nur der Zeilen erstelle, die ein Biopsieergebnis enthalten, und dann nach der Datumsdifferenz frage, würde ich gerne einen Weg finden, die Datumsdifferenz zu bestimmen zwischen beliebigen Zeilen, die ein Biopsieergebnis haben, während die leeren Zeilen ignoriert werden.
@jerry_cooper schrieb:
Ich denke, diese Formel wird Ihnen das geben, wonach Sie suchen:
If(Is Missing(:Column 1), :Column 1, Summation(i = 1, Row(), :Column 1))
Hoffe das hilft.
-Jerry
Können Sie dabei helfen? Idealerweise mit einer Lösung, die ich im Formeleditor sehen oder dort einfügen kann.
Betreff: Formel zur Verwendung des vorherigen Werts, wenn dieser nicht fehlt, ansonsten Wert aus der letzten belegten Zelle verwendenIch glaube, diese Antwort wurde vor der Veröffentlichung von JMP 13 geschrieben, mit der die Funktion „Col Cumulative Sum()“ eingeführt wurde. Wenn Sie Version 13 oder höher verwenden, müssen Sie zum Erstellen einer kumulativen Summenspalte lediglich mit der rechten Maustaste auf die Spaltenüberschrift der Spalte klicken, die Sie summieren möchten, und „Neue Formelspalte=>Zeile=>Kumulative Summe“ auswählen. Dadurch wird eine neue Spalte mit der entsprechenden Formel erstellt. Um die Formel im Editor anzuzeigen, klicken Sie mit der rechten Maustaste auf die neue Spalte und wählen Sie Formel aus.
Wenn Sie eine frühere Version verwenden, kopieren Sie die folgende Anweisung und fügen Sie sie in den Formeleditor ein, um zu sehen, wie sie aussieht:
Summation(i=1, Row(), Your Column[i])
Hoffe das hilft.
Betreff: Formel zur Verwendung des vorherigen Werts, wenn dieser nicht fehlt, ansonsten Wert aus der letzten belegten Zelle verwendenIch denke, das ist genau das, was ich auch brauche, aber ich verstehe das Skript nicht ganz. Kann man im Formeleditor zeigen, wie das aussehen würde?
Vielen Dank
Betreff: Formel zur Verwendung des vorherigen Werts, wenn dieser nicht fehlt, ansonsten Wert aus der letzten belegten Zelle verwendenIch stoße ständig auf dieses Problem und verwende die Lösung von Jerry. Ich analysiere Prozessmessungen (Temperatur, Druck, Durchfluss usw.), die von einem komprimierten Datenhistoriker abgerufen werden. Alle paar tausend Punkte kann ein Wert fehlen.
Das folgende Beispiel berechnet, ob der Reaktor läuft oder nicht, basierend auf dem gleitenden 3-Punkte-Durchschnitt des Katalysatorflusses, F.Cat >= 11 (anonymisiert ja, Sie erhalten die Referenz ...). Wenn F.Cat fehlt, verwendet die Berechnung den Wert „Wird ausgeführt?“ der vorherigen Zeile.
If(
Row() < 3, 0,
Is Missing( :F.Cat ), Lag( :Name( "Running?" ), 1 ),
(Lag( :F.Cat, 2 ) + Lag( :F.Cat, 1 ) + :F.Cat) / 3 >= 11, 1,
0
)
Betreff: Formel zur Verwendung des vorherigen Werts, wenn dieser nicht fehlt, ansonsten Wert aus der letzten belegten Zelle verwenden<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Vielen Dank an alle für eure Kommentare und Hilfe.
Ich denke, Jerrys Vorschlag funktioniert für mich am besten und erforderte nicht die Verwendung einer lokalen Variablen, die ich verwenden wollte.
Betreff: Formel zur Verwendung des vorherigen Werts, wenn dieser nicht fehlt, ansonsten Wert aus der letzten belegten Zelle verwendenIch denke, diese Formel wird Ihnen das geben, wonach Sie suchen:
If( Is Missing( :Column 1 ),
:Column 1,
Summation( i = 1, Row(), :Column 1 )
)
Hoffe das hilft.
-Jerry
Betreff: Formel zur Verwendung des vorherigen Werts, wenn dieser nicht fehlt, ansonsten Wert aus der letzten belegten Zelle verwendenKonnten wir eine Spalte „Formel“ schon immer selbstreferenziell gestalten?Ich hätte nie gedacht, dass ich das schaffen könnte.
Betreff: Formel zur Verwendung des vorherigen Werts, wenn dieser nicht fehlt, ansonsten Wert aus der letzten belegten Zelle verwendenDanke Jim und Jeff,
Ich glaube, ich habe das Problem in meiner Beschreibung und dem Tabellenlayout komplizierter gemacht, als es sein müsste, und ich kann sehen, wie das Sie zu Ihren Vorschlägen geführt hat.
Ich verstehe zwar Ihren Vorschlag, Jeff, eine neue Spalte zu erstellen, die die nicht fehlenden Daten enthält, aber ich hoffe, dass ich meine Arbeit erledigen kann, ohne neue Spalten erstellen zu müssen, da ich diese Formel für viele verschiedene Spalten verwenden werde.Lassen Sie mich versuchen, anhand der folgenden Tabelle klarer zu machen, was ich erreichen möchte.
Ich versuche, eine laufende Summe von Spalte 1 in Spalte 2 zu erstellen. Ohne zusätzliche Spalten zu erstellen, hatte ich gehofft, eine Variable zu erstellen, die den aktuellen laufenden Summenwert in Spalte 2 enthält und diesen zum Wert von Spalte 1 hinzufügt.
Mein Problem besteht darin, dass ich nicht weiß, wie ich am besten eine Variable erstellen und verwenden kann, die den aktuellen Wert für Spalte 2 enthält, damit dieser Wert über Zeilen mit fehlenden Daten in Spalte 1 „übertragen“ werden kann.Die Spalte „Ergebnis, nach dem ich suche“ zeigt, was ich mit der Formel in Spalte 2 erreichen möchte.Hoffentlich ist diese Beschreibung etwas klarer darüber, was ich erreichen möchte.

Betreff: Formel zur Verwendung des vorherigen Werts, wenn dieser nicht fehlt, ansonsten Wert aus der letzten belegten Zelle verwendenIch denke, dass Ihre Beschreibung einen Fehler enthält, den wir klären müssen, bevor wir Ihnen eine genaue Lösung anbieten können. Ihre Bedingung besagt, dass, wenn Col1 NICHT FEHLT, es zum verzögerten Wert von Col2 addiert wird, und wenn Col1 FEHLT, dann zu einem zuvor gespeicherten Wert von Col2 addiert wird.
Sie können zu nichts ein fehlendes Col1 hinzufügen und erhalten etwas anderes als das Fehlen.
Allerdings würde ich diese Tabelle spaltenweise aufbauen. Konkret würde ich mit der folgenden Formel eine Spalte „nicht fehlende Spalte2“ erstellen, in der keine Werte fehlen:

Diese Formel setzt „nicht fehlende Spalte2“ auf Spalte2, wenn Spalte2 nicht fehlt, und setzt sie auf die Verzögerung von „nicht fehlende Spalte2“, wenn Spalte2 fehlt.

Sie können dann in Ihrer endgültigen Formel eine Verzögerung (nicht fehlende Spalte2, 1) verwenden.
Ich hoffe das hilft.
-Jeff
Betreff: Formel zur Verwendung des vorherigen Werts, wenn dieser nicht fehlt, ansonsten Wert aus der letzten belegten Zelle verwendenHier ist eine Version der Formel, die funktioniert:
If( Row() == 1, lagval = . );
x = Sum( :col 1, lagval );
If( Is Missing( col 2 ) == 0,
lagval = :col 2
);
x;