JMP-Äquivalent der Excel-Funktion ZÄHLENWENNIch versuche, dieses Excel-ähnliche Verhalten nachzuahmen:
| | A | B |
| 1 | Fehlertyp | AnzahlFehlerDieserTyp |
| 2 | f1 | =zählenwenn($a$2:$a$999,a2) |
| 3 | f2 | =zählenwenn($a$2:$a$999,a3) |
| 4 | f1 | =zählenwenn($a$2:$a$999,a4) |
| 5 | f1 | =zählenwenn($a$2:$a$999,a5) |
| 6 | f2 | =zählenwenn($a$2:$a$999,a6) |
| ... | ... | ... |
... in JMP. Ist das als Spaltenformel möglich?
Ich habe „Col Sum( :failureType == :failureType[ Row() ] )“ ausprobiert, aber das funktioniert nicht und ich verstehe nicht, warum. Manchmal gibt „:ColumnName“ einen einzelnen Wert zurück, und manchmal gibt es die Einträge der gesamten Spalte zurück und durchläuft sie automatisch. Gibt es eine Möglichkeit, herauszufinden, was es tun wird, vielleicht über den Scripting-Index?
Grundlegende Datenanalyse und ModellierungBetreff: JMP-Äquivalent der Excel-Funktion ZÄHLENWENN
Vielleicht Spaltensumme von 1 nach Fehlertyp?
Col Sum(1, :FailureType)
Hier hat Spalte 6 die Formel Col Sum(1, :age)

Betreff: JMP-Äquivalent der Excel-Funktion ZÄHLENWENNJupp, das wird wahrscheinlich klappen.
Warum hat mein Col Sum(...) nicht funktioniert? Wird Row() auch intern bei jedem Schritt aktualisiert?
Betreff: JMP-Äquivalent der Excel-Funktion ZÄHLENWENNErstellen Sie eine Spalte nur mit Row() und Sie werden sehen, was zurückgegeben wird

Das Gleiche können Sie tun für
:failureType[Row()]
und für
:failureType
und schließlich für
:failureType == :failureType[Row()]
um zu sehen, was am Ende dabei herauskommt (Sie vergleichen den aktuellen Zeilenwert des Fehlertyps mit dem aktuellen Zeilenwert des Fehlertyps, nur mit anderer Syntax, die fast immer 1 ergibt).
Betreff: JMP-Äquivalent der Excel-Funktion ZÄHLENWENNEine andere Option ist Col Number()
Col Number(:FailureType, :FailureType)
Betreff: JMP-Äquivalent der Excel-Funktion ZÄHLENWENNDiese Antworten haben Ihre Frage zu einer Funktion, die wie Excel funktioniert, direkt beantwortet. Sie können für Zusammenfassungen auch Tabelle > Zusammenfassung, Analysieren > Tabellieren und Diagramm > Diagrammerstellung verwenden, ohne eine Formelspalte zu verwenden, wenn Sie das möchten.
Betreff: JMP-Äquivalent der Excel-Funktion ZÄHLENWENNDiese Formel scheint auch zu funktionieren:
Names Default to Here(1);
n1 = :failureType;
Col Sum( :failureType == n1 )
Es scheint, dass innerhalb der Col Sum-Funktion erwartet wird, über Listen zu iterieren, ähnlich wie bei einer for-Schleife in Python über komprimierte Variablen, aber in der zweiten Zeile wird nur der Wert von :failureType aus der aktuellen Zeile abgerufen. Diese Art impliziten Verhaltens ist unglaublich hilfreich/nützlich, aber nur, wenn der Benutzer versteht, wie sie funktionieren.
Betreff: JMP-Äquivalent der Excel-Funktion ZÄHLENWENNWow. Irgendwie überraschend. Ich hätte nicht erwartet, dass es so funktioniert.
Wie haben Sie das herausgefunden?
Open( "$SAMPLE_DATA/Big Class.jmp" );
New Column( "ColSum1",
Formula(
Col Sum( :age == 12 );
)
);
New Column( "ColSum2",
Formula(
twelve = 12;
Col Sum( :age == twelve );
)
);
New Column( "ColSum3",
Formula(
myAGE = :age;
Col Sum( :age == myAGE );
)
);
New Column( "ColSum4",
Formula(
myAGE = :age;
myname= :name;
Col Sum( show(myname,myAge,:name,:age,"-");:age == myAGE );
)
);
Betreff: JMP-Äquivalent der Excel-Funktion ZÄHLENWENNVerwandter Beitrag mit einigen Parallelen: Countif-Äquivalent?
aber ohne die Magie von @BHarris : )
Betreff: JMP-Äquivalent der Excel-Funktion ZÄHLENWENNAuch wenn es so aussieht, als würde es funktionieren, würde ich es nicht verwenden (ich denke, es sollte in Ordnung sein, wenn Sie :failureType als byvar benötigen). Ich würde denken, dass es sich um eine Art unbeabsichtigtes Verhalten handelt (sogar mehr als die Verwendung von 1, was laut JMP-Unterstützung auch nicht zulässig sein sollte, aber hoffen wir, dass JMP das nie unterbricht
Unterstütztes Verhalten durch die Verwendung von Formelausdrücken in „Set Each Value“ und die Verwendung von Ausdrücken als erstes Argument in „Col“-Statistikformeln ).
Sie können es dem JMP-Support melden und versuchen, eine technische Erklärung dafür zu erhalten, warum es so funktioniert. Sie können auch versuchen, andere Vergleiche auf ähnliche Weise zu verwenden.

Betreff: JMP-Äquivalent der Excel-Funktion ZÄHLENWENN@hogi Es ist vermutlich nicht so magisch, wie es scheint – das erste Argument für Col Sum ist ein Ausdruck, und in diesem Fall ist n1 vorab berechnet (wahrscheinlich aufgrund des Kontexts auf den Wert aus der aktuellen Zeile gesetzt) und ==-Ausdrücke scheinen 1 oder 0 zurückzugeben. Daher werden einfach eine Reihe von 1en addiert, wobei der Spaltenwert n1 und andernfalls 0 ist.
Was für mich ein wenig magisch ist, ist, dass JMP in Spaltenformeln manchmal über die Zeilen in einer Spalte iteriert, wenn es als „:columnName“ eingegeben wird, und manchmal nur den Wert aus dieser Spalte in der aktuellen Zeile abruft. Das ist mir seit der Diskussion in diesem anderen Thread ein Rätsel.
Ich vermute, dass die Funktion Col Number() in diesem Fall am besten geeignet ist, da sie den Cache wahrscheinlich sauberer speichert als diese.
Ehrlich gesagt wusste ich nicht, dass Col Number() existiert. Ich habe den Großteil meines Erwachsenenlebens mit Excel verbracht und wünschte mir, es gäbe irgendwo eine Zuordnung von Excel-Funktionen zu JMP-Funktionen.
Betreff: JMP-Äquivalent der Excel-Funktion ZÄHLENWENNNew Column( "ColSum4",
Formula(
myAGE = :age;
myname= :name;
Col Sum( show(myname,myAge,:name,:age,"-");:age == myAGE );
)
);
ist recht anschaulich. Col kumulativ verhält sich etwas anders, als ich dachte.
Ich habe vermutet, dass Col Sum das Argument einmal auswertet und dann die Ergebnisse gemäß groupBy gruppiert/sammelt.
Aber eigentlich:
Die Formel wird für jede Zeile ausgewertet, insgesamt 40x für die Zeilen RWx.
Und bei jeder Iteration wertet Col Sum sein Argument 40 Mal aus – für jede Zeile RWy.
Ich vermute, es versucht, das Ergebnis zwischenzuspeichern und wertet das Argument für andere RWx nicht erneut aus, wenn sicher sein kann, dass das Ergebnis dasselbe ist.
Aber im Fall von Show() oder :age = myAGE muss es immer wieder neu ausgewertet werden.
-> insgesamt 40 x 40 mal.
So wird beispielsweise für die Zeile RWx = 3 (meinName = Jane) das Argument 40 Mal ausgewertet.
Und für 8 der 40 RWy ergibt :age == myAge 1. Somit beträgt Col Sum für Zeile 3 8.
Dementsprechend beträgt die Spaltensumme für Zeile 40 3.
Betreff: JMP-Äquivalent der Excel-Funktion ZÄHLENWENN
@jthi schrieb:
Auch wenn es so aussieht, als würde es funktionieren, würde ich es nicht verwenden (ich denke, es sollte in Ordnung sein, wenn es erfordert, dass Sie :failureType als byvar haben). Ich würde denken, dass es sich um eine Art unbeabsichtigtes Verhalten handelt (sogar mehr als die Verwendung von 1, was laut JMP-Unterstützung auch nicht zulässig sein sollte, aber hoffen wir, dass JMP das nie unterbricht
Unterstütztes Verhalten durch die Verwendung von Formelausdrücken in „Set Each Value“ und die Verwendung von Ausdrücken als erstes Argument in „Col“-Statistikformeln ).
Ich fühle mich auch viel sicherer, wenn eine Funktionalität dokumentiert ist – irgendwie geschützt vor plötzlicher Entfernung …
JMP muss herausfinden, ob es in Ordnung ist, die Ergebnisse zwischenzuspeichern. Wer kennt die Logik?
In diesem Fall hält JMP die Verwendung der zwischengespeicherten Daten für in Ordnung:
t0 = hptime();
New Column( "test",
Formula(
wait(0.1);
Col Sum( hp time() )
),
);
current data table() << run formulas();
show((hptime()-t0)/1000000)
Betreff: JMP-Äquivalent der Excel-Funktion ZÄHLENWENN@BHarris
@BHarris schrieb:
Manchmal iteriert JMP in Spaltenformeln über die Zeilen einer Spalte, wenn sie als „:columnName“ eingegeben werden.
Können Sie ein Beispiel geben?
Betreff: JMP-Äquivalent der Excel-Funktion ZÄHLENWENNKlar, öffnen Sie BigClass.jmp und fügen Sie eine Spalte mit dieser Formel hinzu:
Spaltensumme (:Größe * :Gewicht, :Geschlecht)