Countif-Äquivalent?Ich versuche, eine JMP-Formelfunktion zu finden, die der Countif-Funktion von Excel entspricht, die auf eine Spalte zeigt und die Anzahl der Zeilen zurückgibt, die mit dem Wert in der aktuellen Zeile übereinstimmen, wie Sie erhalten würden, wenn Sie eine Zusammenfassung für diese Zeile erstellen würden .
Mit anderen Worten: Wenn ich eine Tabelle mit 1000 Zeilen habe und die Spaltenfarbe in 27 Zeilen auf „Lila“ gesetzt ist, möchte ich eine Formel für eine neue Zeile, die für diese Zeilen 27 zurückgibt (und den anwendbaren Wert für die anderen Zeilen).
(Ich bin mir sicher, dass das hier drin ist, aber **piep**, wenn ich es finden kann)
JMP 17, macOS
MassenanpassungBetreff: Countif-Äquivalent?Nah dran, denke ich. Ich war nie in diesem C++-Code, aber ich glaube, dass er beim allerersten Aufruf (normalerweise für Zeile 1) alle Zeilen vorverarbeitet, um alle möglichen Antworten nach Werten zwischenzuspeichern. Dann werden alle nachfolgenden Zeilen aus diesem Cache nach Wert beantwortet. (Ohne den Cache wäre es eine order(N^2)-Zeit für N Zeilen, mit dem Cache wäre es nur order(N) - lineare Zeit.)
Betreff: Countif-Äquivalent?Das macht Sinn, aber dann iteriert die Funktion Col Sum() über etwas ...
Ich stelle mir vor, dass es über die Zeilen iteriert, die mit dem aktuellen Wert in den byVar-Spalten übereinstimmen, den Ausdruck für jede einzelne auswertet und dann alle Ergebnisse dieser Auswertungen addiert.
Habe ich das richtig?Wenn ja, wäre mir dieser Wortlaut in der Dokumentation zum Col Sum()-Skriptindex sehr hilfreich gewesen.
Betreff: Countif-Äquivalent?Stellen Sie sich das erste Argument als Ausdruck vor. Ein Ausdruck kann sein
- 42
- :Höhe
- :Höhe *2 > :Gewicht
- if ( :height *2 > :weight, age, 99 )
- if ( :height>60 & :weight> 100, 1, 0 )
Alle diese Werte werden im Kontext der aktuellen Zeile ausgewertet, also unter Verwendung der Größen-, Gewichts- und Alterswerte der aktuellen Zeile. Der >-Operator gibt 1 für wahr und 0 für falsch zurück, sodass auch eine Summierung möglich ist. Das „if“ ergibt in jeder Zeile entweder „Alter“ oder „99“ und das wird summiert. Und allein die Verwendung von :height wird ebenfalls ausgewertet, um den Wert der aktuellen Zeile zurückzugeben.
Ich gebe zu, ich habe es angeschaut @jthi Beispiel für eine Minute, bevor ich es bekam. Wenn Sie dies in Code einbauen, fügen Sie einen Kommentar für denjenigen hinzu, der es als nächstes pflegen muss!
Betreff: Countif-Äquivalent?@Craige_Hales Wenn also der erste Eintrag ein Spaltenobjekt ist, durchläuft die Funktion „Col Sum()“ die Werte in der Spalte (unter Berücksichtigung der byVar-Einstellung) und summiert die Werte. Wenn der erste Eintrag jedoch nur eine Zahl ist, verwendet sie diese einfach?
Kann der erste Eintrag ein beliebiger Ausdruck sein, der einen Wert zurückgibt?
Kann es auch eine Liste zurückgeben, die übersprungen wird, ähnlich wie bei der Bereitstellung eines Spaltenobjekts?Was passiert, wenn die Länge dieser Liste nicht mit der Länge der byVar-Liste übereinstimmt?
Dieses interne Verhalten von JMP ist faszinierend und ich würde gerne mehr darüber erfahren, aber ich kann in den Dokumenten nichts finden, was mir helfen könnte, ein mentales Modell davon zu entwickeln, was es in solchen Fällen tut ...
Beachten Sie, dass countif eine Excel-Funktion ist, die alle Elemente eines Zellbereichs zählt, die bestimmte Kriterien erfüllen.Ich glaube nicht, dass Col Sum() genau das tut, es scheint keine Möglichkeit zu geben, damit beispielsweise die Anzahl der Fälle zu zählen, in denen col1 > 7 und col2 == 15 ist.
Betreff: Countif-Äquivalent?@Audrey_Shull vielleicht das @jthi Beispiel kann mit einer Erklärung zum Skriptindex hinzugefügt werden, etwa „Das erste Argument der Spaltenformel ist ein Ausdruck, der für jede Zeile ausgewertet wird.“ Normalerweise handelt es sich um eine Spalte, die die Werte der Spalte summiert, aber in diesem Beispiel ist es eine Konstante 1, die sich auf die Anzahl der Zeilen summiert. Das ist in diesem Beispiel nützlich, da das zweite Argument die Nebenspalte ist, wodurch die Summen für jeden Nebenwert berechnet werden.
Das Hinzufügen des Schlüsselworts „countif“ könnte jemandem in Zukunft helfen, es zu finden (ich bin nicht über Excel-Kenntnisse, also schaue vielleicht zuerst nach „countif“ ...)
Betreff: Countif-Äquivalent?Es wird 1 für den Wert der Zeile anstelle eines bestimmten Werts verwendet, der aus der Zeile einer Spalte gefunden wird.
Bearbeiten: In diesem Fall denke ich, dass die Verwendung von Col Number(:Column 1, :Column 1) auch funktionieren sollte.
Betreff: Countif-Äquivalent?@jthi : Der Hilfetext besagt, dass das erste Argument für Col Sum() „xCol“ ist, aber Sie haben dort nur eine „1“.Was macht JMP mit dieser Nummer 1 hier?
(Das ist sehr nützlich, diese Frage hatten wir heute auch.)
Betreff: Countif-Äquivalent?Welchen Hilfetext meinen Sie und was ist daran unintuitiv?Col Sum(name,)
Auch über den Scripting Index (zu finden im Hilfemenü von JMP) können Sie ausführbare Demoskripte abrufen, die manchmal hilfreich sein können

Betreff: Countif-Äquivalent?Genau – danke!
(Und der JMP-Hilfetext zu Col Sum ist sicher nicht intuitiv ...)
Betreff: Countif-Äquivalent?Etwas wie das?

Col Sum(1, :Column 1)