Betreff: Wie man "bedingte Anweisungen" verwendet, um Datenzeilen auszuwählen, um sie dann auszuführen, z. B. einfache Col A - Col CVIELEN DANK AN: Sarah Seligman, Technischer Support von SAS, für die Lösung meiner Frage.Das Ausschneiden/Einfügen aus ihrer E-Mail ist unten, aber die Formatierung geht verloren, daher habe ich ihre X.jmp-Datendatei und eine PDF-Datei ihrer Antwort angehängt, in der es möglicherweise einfacher ist, das JSL-Format in der Formel zu sehen.Nochmals mein Dank an Sarah und an Jim für die anfängliche Beantwortung meiner JSL-Frage.
___
Hallo Jeff, danke für deine Geduld. Ich habe eine Datentabelle angehängt, die eine Formel enthält, die meiner Meinung nach das tut, was Sie beschrieben haben. In Bezug auf den Teil Ihrer Frage, in dem Sie gefragt haben: "Ist es möglich, IF-Anweisungen so zu strukturieren, dass ELSE-Aktionen weggelassen werden?" Die einfache Antwort darauf ist ja - Sie lassen einfach den "Else"-Teil der bedingten IF-Anweisung leer. Mit einer IF-Anweisung würde es also im Formeleditor etwa so aussehen: In JSL heißt das: If(:YEAR == "2020" & :CROP == "Corn" & :TYPE == "Foliar", :TRT 03 - :TRT 01 ) Mit zwei IF-Anweisungen sähe es einfach so aus: In JSL heißt das: If( :YEAR == "2020" & :CROP == "Corn" & :TYPE == "Foliar ", :TRT 03 - :TRT 01, :YEAR == "2020" & :CROP == "Corn" & :TYPE == "IF", :TRT 05 - :TRT 01 ) Wenn Sie eher den Formeleditor verwenden als JSL können Sie eine neue IF-Bedingung einfügen, indem Sie auf das Caret-Symbol klicken. In der folgenden Bildschirmaufnahme habe ich dreimal darauf geklickt, um drei weitere If-Ausdrucksfelder hinzuzufügen. Zurück zu dem von Ihnen beschriebenen Ziel: Ich erstelle eine neue Spalte mit dem Namen „16FLOZ_AddedValue“ und möchte, dass die Formel Folgendes tut: Wenn YEAR = 2020, CROP=Mais, TYPE=Foliar, muss die Formel den Wert „TRT3“ minus Spalte „ zurückgeben. TRT1"; jedoch, wenn YEAR = 2020, CROP=Mais, TYPE=IF (dh in der Furche), muss die Formel den Wert von „TRT5“ minus Spalte „TRT1“ in derselben Spalte mit dem Namen „16FLOZ_AddedValue“ zurückgeben; Wenn jedoch YEAR = 2021, CROP=Corn, TYPE=Foliar ist, muss die Formel den Wert von „TRT4“ minus Spalte „TRT1“ in derselben Spalte mit dem Namen „16FLOZ_AddedValue“ zurückgeben; unten ist die darauf basierende Formel für die neue Spalte 16FLOZ_AddedValue Bezeichnung. In der angehängten Datentabelle können Sie auf das blaue Plus-Symbol neben dem Spaltennamen im Spaltenbereich klicken, um ihn im Formeleditor anzuzeigen. In JSL wird diese Formel wie folgt geschrieben: If( :YEAR == "2020" & :CROP == "Corn" & :TYPE == "Foliar", :TRT 03 - :TRT 01, :YEAR == "2020" & :CROP == "Mais" & :TYPE == "IF", :TRT 05 - :TRT 01, :YEAR == "2021" & :CROP == "Mais" & :TYPE == "Blatt", : TRT 04 - :TRT 01 ) Sie sagten auch: In Bezug auf die ELSE-Anweisungen möchte ich, dass die Formel keine versteckten Aktionsschritte ausführt, wenn die "IF" -Kombination nicht erfüllt ist. Mit anderen Worten, zum Beispiel, wenn YEAR=2020, CROP=Mais, TYPE=Blatt, dann nur TRT3-TRT1 berechnen und alle ELSE-Aktionstypen weglassen, dh alle verbleibenden Zellenwerte unverändert lassen; und fahren Sie mit den nächsten kombinierten IF-Anweisungen fort, die die Formel anweisen könnten, TRT5-TRT1 usw. zu verwenden. Ist es möglich, IF-Anweisungen so zu strukturieren, dass ELSE-Aktionen weggelassen werden? Die von mir erstellte Formel legt den entsprechenden Wert fest, wenn die Kriterien für die erste IF-Bedingung erfüllt sind, wechselt dann zur nächsten IF-Bedingung und so weiter. Sie müssen keine ELSE-Bedingung/Wert angeben. Ich hoffe, diese Informationen sind hilfreich. Bitte lassen Sie es mich wissen, wenn Sie weitere Fragen haben. Mit freundlichen Grüßen, Sarah Seligman JMP Technischer Support Share. Fragen. Lernen. Anschließen. - community.jmp.com Ich werde gerne weiter mit Ihnen zusammenarbeiten, falls Sie weitere Fragen zu dieser Angelegenheit haben sollten; Antworten Sie einfach innerhalb von 5 Werktagen auf diese E-Mail. Wenn diese Antwort Ihre Frage vollständig beantwortet hat, teilen Sie mir bitte mit, dass Sie diese E-Mail erhalten haben und ich dieses Problem zu Ihrer Zufriedenheit gelöst habe. Anhänge 7613517300.jmp (6 Kb)
Betreff: Wie man "bedingte Anweisungen" verwendet, um Datenzeilen auszuwählen, um sie dann auszuführen, z. B. einfache Col A - Col CHallo Jim, danke für die Antwort und ich weiß jede Hilfe zu schätzen, die Sie anbieten können, und entschuldigen Sie die Verwirrung - ich werde versuchen, die Art der Formel, die ich möchte, zu klären und zu vereinfachen.
Ich habe eine Spalte namens YEAR und die Werte sind entweder 2020 oder 2021.
Ich habe eine andere Spalte namens CROP und die Werte sind entweder Mais oder Sojabohne.
Ich habe eine andere Spalte mit dem Namen TYPE und die Werte sind entweder Foliar oder IF (dh in der Furche).
Ich habe weitere 10 Spalten, die den mittleren Ertrag der Behandlungen 1 bis 10 darstellen (TRT1, TRT2,......,TRT10).
Ich möchte eine Formel zur Berechnung des Mehrwerts jeder Behandlung (unterschiedliche Produktdosisraten) gegenüber der Kontrollbehandlung (0-Rate).Hier ist der Clou, die Behandlungszahlen (die Dosisraten von 0, 1, 4, 8, 16, 32, 64 FL OZ/acre darstellen) unterschieden sich zwischen den 2 Jahren und zwischen CROP und TYPE.Beispielsweise betrug die Produktdosisrate von 16 FL OZ/Acre im Jahr 2020 sowohl für Mais als auch für Sojabohnen „IF“ TRT5, d.
Also habe ich 8 mögliche Kombinationen von YEAR (2) x CROP (2) x TYPE (2) und ich möchte 1 Formel um die Werte für die Änderung in bu./acre für eine bestimmte Produktdosisrate im Vergleich zur Kontrollbehandlung (0-Rate) einzugeben.... also erstelle ich zum Beispiel eine neue Spalte mit dem Namen "16FLOZ_AddedValue" und möchte, dass die Formel funktioniert :
Wenn JAHR = 2020, CROP=Mais, TYPE=Blatt, muss die Formel den Wert „TRT3“ zurückgeben. Minus- Spalte "TRT1"; Jedoch,
Wenn YEAR = 2020, CROP=Mais, TYPE=IF (dh in der Furche), muss die Formel den Wert „TRT5“ zurückgeben. Minus- Spalte „TRT1“ in derselben Spalte namens „16FLOZ_AddedValue“; Jedoch,
Wenn YEAR = 2021, CROP=Corn, TYPE=Foliar, muss die Formel den Wert „TRT4“ zurückgeben. Minus- Spalte „TRT1“ in derselben Spalte mit dem Namen „16FLOZ_AddedValue“;
usw. (Entschuldigung, ich weiß nicht, wie ich die "IF"s in einer Formel aneinanderreihen soll).
In Bezug auf den ELSE-Kommentar betrifft dies nur meinen Wunsch, dass die Formel keine versteckten Aktionsschritte ausführt, wenn die „IF“ -Kombination nicht erfüllt ist.Mit anderen Worten, zum Beispiel, wenn YEAR=2020, CROP=Mais, TYPE=Blatt, dann nur TRT3-TRT1 berechnen und alle ELSE-Aktionstypen weglassen, dh alle verbleibenden Zellenwerte unverändert lassen; und fahren Sie mit den nächsten kombinierten IF-Anweisungen fort, die die Formel anweisen könnten, TRT5-TRT1 usw. zu nehmen.
Betreff: Wie man "bedingte Anweisungen" verwendet, um Datenzeilen auszuwählen, um sie dann auszuführen, z. B. einfache Col A - Col CIch habe Probleme, Ihren Pseudocode zu interpretieren.
Ich nehme an, Sie haben eine numerische Spalte namens YEAR und Sie prüfen, ob sie den Wert 2020 hat
Haben Sie eine Spalte mit dem Namen:
ZUSCHNEIDEN | Mais | Sojabohne
oder möchten Sie, dass eine Spalte mit dem Namen CROP den Wert Mais oder Soja hat
Es scheint, dass Sie eine Spalte mit dem Namen TYPE haben und prüfen, ob sie den Wert "IF" hat?
und wenn der Wert gleich "IF" ist, dann möchten Sie die Differenz zwischen einer Spalte namens Mean(YIELD(BU/A)_OR, 13) und einer Spalte namens Mean(YIELD(BU/A)_OR, 8) finden.
oder möchten Sie den Mittelwert für die Spalte YIELD berechnen
und schließlich verweisen Sie auf eine Spalte namens ELSE und bestimmen, ob sie gleich einer Spalte namens EMPTY ist.
Ich bin sicher, das ist nicht das, was Sie wollen.
Können Sie ein Beispiel für die Datentabelle geben und dann in Worten beschreiben, was Sie wollen.
Ich schlage auch vor, dass Sie sich die Zeit nehmen, den Scripting Guide zu lesen.Sie ist in der JMP-Dokumentationsbibliothek im Pulldown-Menü „Hilfe“ verfügbar.
So verwenden Sie „bedingte Anweisungen“, um Datenzeilen auszuwählen, um sie dann auszuführen, z. B. einfache Col A – Col CHilfe benötigen!
Ich möchte Datenzeilen aus 3 oder 4 Spalten auswählen (basierend auf CONDITIONAL-Anweisungen) und dann eine eher einfache Formel ausführen, z. B. wenn die Bedingungen bei der Auswahl der richtigen Zeilen erfüllt sind
Wenn(
:JAHR == 2020 , :CROP | Mais | Sojabohne ,
:TYPE == WENN , :"Mean(YIELD(BU/A)_OR, 13)"n - :"Mean(YIELD(BU/A)_OR, 8)"n,
:ELSE == :EMPTY (Ich bevorzuge die Verwendung der ELSE-Anweisung, wenn es möglich ist. Ich möchte nur, dass die oben genannten bedingten Anweisungen erfüllt sind, um genau zu wissen, was in der neuen Spalte über die Formel hinzugefügt wird.)
ODER,
Wenn(
:JAHR == 2020 , :CROP | Mais | Sojabohne ,
:TYPE == BLATT , :"Mean(YIELD(BU/A)_OR, 4)"n - :"Mean(YIELD(BU/A)_OR, 1)"n,
ODER,
Wenn(
:JAHR == 2021 , :CROP | Mais | Sojabohne ,
:TYPE == WENN , :"Mean(YIELD(BU/A)_OR, 6)"n - :"Mean(YIELD(BU/A)_OR, 2)"n
ODER,
Wenn(
:JAHR == 2021 , :CROP | Mais | Sojabohne ,
:TYPE == BLATT , :"Mean(YIELD(BU/A)_OR, 3)"n - :"Mean(YIELD(BU/A)_OR, 1)"n
)
Erweiterte statistische ModellierungVerbraucher- und MarktforschungQualitäts- und Verfahrenstechnik