「条件付きステートメント」を使用してデータ行を選択して実行する方法(例:単純な列A-列C)助けが要る!
3列または4列からデータ行を選択したい(CONDITIONALステートメントに基づいて、正しい行を選択する際に条件が満たされた場合など、単純な数式を実行します)
もしも(
:YEAR == 2020 、:CROP |トウモロコシ|大豆、
:TYPE ==もしも、: "Mean(YIELD(BU / A)_OR、13)" n-: "Mean(YIELD(BU / A)_OR、8)" n、
:ELSE ==:EMPTY(可能な場合はELSEステートメントを使用しないことをお勧めします....上記の条件ステートメントを満たして、数式を介して新しい列に何が追加されるかを正確に把握する必要があります)
また、
もしも(
:YEAR == 2020 、:CROP |トウモロコシ|大豆、
:TYPE == FOLIAR 、: "Mean(YIELD(BU / A)_OR、4)" n-: "Mean(YIELD(BU / A)_OR、1)" n、
また、
もしも(
:YEAR == 2021年、:CROP |トウモロコシ|大豆、
:TYPE ==もしも、: "Mean(YIELD(BU / A)_OR、6)" n-: "Mean(YIELD(BU / A)_OR、2)" n
また、
もしも(
:YEAR == 2021年、:CROP |トウモロコシ|大豆、
:TYPE == FOLIAR 、: "Mean(YIELD(BU / A)_OR、3)" n-: "Mean(YIELD(BU / A)_OR、1)" n
)。
スクリプティングRe:「条件付きステートメント」を使用してデータ行を選択して実行する方法(例:単純な列A-列C)擬似コードの解釈に問題があります。
YEARという数値列があり、値が2020かどうかを確認していると仮定します。
次の名前の列がありますか?
クロップ|とうもろこし|大豆
または、CROPという名前の列にトウモロコシまたは大豆の値を設定したいですか
TYPEという名前の列があり、その値が「IF」であるかどうかを確認しているようです。
値が「IF」に等しい場合は、Mean(YIELD(BU / A)_OR、13)という名前の列とMean(YIELD(BU / A)_OR、8)という名前の列の違いを見つけます。
または、列YIELDの平均を計算しますか
最後に、ELSEという名前の列を参照し、EMPTYという名前の列と等しいかどうかを判別します。
これはあなたが望むものではないと確信しています。
データテーブルとは何かのサンプルを提供してから、必要なものを言葉で説明していただけますか。
また、時間をかけてスクリプトガイドを読むことをお勧めします。これは、JMPドキュメントライブラリの[ヘルプ]プルダウンメニューから利用できます。
Re:「条件付きステートメント」を使用してデータ行を選択して実行する方法(例:単純な列A-列C)こんにちはジム、返信してくれてありがとう、そしてあなたが提供できるどんな助けにも感謝し、混乱をお詫びします-私は私が望んでいる式のタイプを明確にして単純化しようとします。
YEARという名前の列があり、値は2020または2021です。
CROPという名前の別の列があり、値はトウモロコシまたは大豆のいずれかです。
TYPEという名前の別の列があり、値はFoliarまたはIF(つまり、溝内)のいずれかです。
処理1から10(TRT1、TRT2、......、TRT10)の平均収量を表す別の10列があります。
各治療(異なる製品線量率)と対照治療(0率)の付加価値を計算する式が必要です。これがキッカーです。治療数(線量率0、1、4、8、16、32、64 FL OZ /エーカーを表す)は、2年間、およびCROPとTYPEの間で異なりました。たとえば、16 FL OZ /エーカーの製品線量率は、トウモロコシと大豆の「IF」の両方で2020年にTRT5でした。つまり、畝間試験を表し、2021年のトウモロコシと大豆の「葉」試験の両方でTRT3でした。
だから私はYEAR(2)x CROP(2)x TYPE(2)の8つの可能な組み合わせを持っていますそして私は欲しいです1式特定の製品の線量率と対照処理(0率)のbu./acreの変化の値を入力するには、たとえば、「16FLOZ_AddedValue」という名前の新しい列を作成し、式に次のようにします。 :
YEAR = 2020、CROP = Corn、TYPE = Foliarの場合、数式は「TRT3」の値を返す必要があります。マイナス列 "TRT1";でも、
YEAR = 2020、CROP = Corn、TYPE = IF(つまり溝内)の場合、数式は「TRT5」の値を返す必要がありますマイナス「16FLOZ_AddedValue」という名前の同じ列の列「TRT1」。でも、
YEAR = 2021、CROP = Corn、TYPE = Foliarの場合、数式は「TRT4」の値を返す必要がありますマイナス「16FLOZ_AddedValue」という名前の同じ列の列「TRT1」;
など(申し訳ありませんが、「IF」を1つの数式にまとめる方法がわかりません)。
ELSEのコメントに関しては、「IF」の組み合わせが満たされない場合に、数式に隠されたアクションステップを実行させたくないという私の願望に関係しています。つまり、たとえば、YEAR = 2020、CROP = Corn、TYPE = Foliarの場合、TRT3-TRT1のみを計算し、ELSEタイプのアクションを省略します。つまり、残りのすべてのセル値は変更されません。そして、式にTRT5-TRT1などを使用するように指示する可能性のある次のコンボIFステートメントに移動します。
Re:「条件付きステートメント」を使用してデータ行を選択して実行する方法(例:単純な列A-列C)どうもありがとうございました:私の質問に対する解決策を提供してくれたSASテクニカルサポートのSarahSeligman氏。彼女の電子メールからのカット/ペーストは以下のとおりですが、フォーマットが失われているので、彼女のX.jmpデータファイルと彼女の回答のPDFを添付しました。これは、数式でJSLフォーマットを確認しやすい場合があります。繰り返しになりますが、JSLの質問に最初に回答してくれたSarahとJimに感謝します。
___
こんにちはジェフ、あなたの忍耐に感謝します。 あなたが説明したと思うことを実行する数式を含むデータテーブルを添付しました。 「ELSEアクションを省略した方法でIFステートメントを構成することは可能ですか?」という質問の部分について。 それに対する簡単な答えは「はい」です。条件付きIFステートメントの「Else」部分を空白のままにします。 したがって、1つのIFステートメントを使用すると、数式エディタでは次のようになります。JSLでは、次のようになります。If(:YEAR == "2020"&:CROP == "Corn"&:TYPE == "Foliar"、 :TRT 03-:TRT 01)2つのIFステートメントを使用すると、次のようになります。JSLでは、次のようになります。If(:YEAR == "2020"&:CROP == "Corn"&:TYPE == "Foliar "、:TRT 03-:TRT 01、:YEAR ==" 2020 "&:CROP ==" Corn "&:TYPE ==" IF "、:TRT 05-:TRT 01)数式エディタを使用している場合JSLよりも、キャレットアイコンをクリックして新しいIF条件を挿入できます。 以下のスクリーンキャプチャでは、3回クリックして、さらに3つのIf式フィールドを追加しました。 説明した目標に戻ります。「16FLOZ_AddedValue」という名前の新しい列を作成し、数式で実行します。YEAR= 2020、CROP = Corn、TYPE = Foliarの場合、数式は「TRT3」から列「」を引いた値を返す必要があります。 TRT1 ";ただし、YEAR = 2020、CROP = Corn、TYPE = IF(つまり溝内)の場合、数式は「TRT5」から「16FLOZ_AddedValue」という名前の同じ列の列「TRT1」を引いた値を返す必要があります。ただし、YEAR = 2021、CROP = Corn、TYPE = Foliarの場合、数式は「16FLOZ_AddedValue」という名前の同じ列の「TRT4」から列「TRT1」を引いた値を返す必要があります。以下は、それに基づく新しい列16FLOZ_AddedValueの数式です。説明。 添付のデータテーブルで、列パネルの列名の横にある青いプラスアイコンをクリックして、数式エディタで表示できます。 JSLでは、この式は次のように記述されます。If(:YEAR == "2020"&:CROP == "Corn"&:TYPE == "Foliar"、:TRT 03-:TRT 01、:YEAR == "2020" &:CROP == "Corn"&:TYPE == "IF"、:TRT 05-:TRT 01、:YEAR == "2021"&:CROP == "Corn"&:TYPE == "Foliar"、: TRT 04-:TRT 01)また、次のように述べています。ELSEステートメントに関して、「IF」の組み合わせが満たされない場合に、数式に隠されたアクションステップを実行させたくないという私の願望。 つまり、たとえば、YEAR = 2020、CROP = Corn、TYPE = Foliarの場合、TRT3-TRT1のみを計算し、ELSEタイプのアクションを省略します。つまり、残りのすべてのセル値は変更されません。そして、式にTRT5-TRT1などを取るように指示する可能性のある次のコンボIFステートメントに移動します。ELSEアクションを省略した方法でIFステートメントを構造化することは可能ですか? 私が作成した式は、最初のIF条件の基準が満たされたときに適切な値を設定し、次に次のIF条件に移動します。 ELSE条件/値を指定する必要はありません。 この情報がお役に立てば幸いです。 他にご不明な点がございましたら、お気軽にお問い合わせください。 よろしくお願いいたします。SarahSeligmanJMPテクニカルサポートシェア。 聞く。 学び。 接続。 --community.jmp.comこの件に関してフォローアップの質問がある場合は、引き続き協力させていただきます。 5営業日以内にこのメールに返信してください。 この回答があなたの質問に完全に答えた場合は、このメールを受け取ったことを知らせてください。私はこの問題を満足のいくように解決しました。 添付ファイル7613517300.jmp(6 Kb)