如何使用“條件語句”選擇數據行然後執行,例如簡單的 Col A - Col C需要一些幫助!
我想從 3 或 4 列中選擇數據行(基於 CONDITIONAL 語句,然後執行相當簡單的公式,例如,如果在選擇正確的行時滿足條件
如果(
:年 == 2020 , : 裁剪 |玉米|大豆,
:類型 ==如果, :"平均值(YIELD(BU/A)_OR, 13)"n - :"平均值(YIELD(BU/A)_OR, 8)"n,
:ELSE == :EMPTY (如果可能的話,我更喜歡不使用 ELSE 語句......只是希望滿足上述條件語句以確切知道通過公式在新列中添加了什麼)
或者,
如果(
:年 == 2020 , : 裁剪 |玉米|大豆,
:類型 ==葉面, :"平均值(YIELD(BU/A)_OR, 4)"n - :"平均值(YIELD(BU/A)_OR, 1)"n,
或者,
如果(
:年 == 2021 , : 裁剪 |玉米|大豆,
:類型 ==如果, :"平均值(YIELD(BU/A)_OR, 6)"n - :"平均值(YIELD(BU/A)_OR, 2)"n
或者,
如果(
:年 == 2021 , : 裁剪 |玉米|大豆,
:類型 ==葉面, :"平均值(YIELD(BU/A)_OR, 3)"n - :"平均值(YIELD(BU/A)_OR, 1)"n
)
腳本回复:如何使用“條件語句”選擇數據行然後執行,例如簡單的 Col A - Col C我無法解釋您的偽代碼。
我假設您有一個名為 YEAR 的數字列,並且您正在檢查它是否具有值 2020
你有一個名為:
作物 |玉米 |大豆
或者您是否希望名為 CROP 的列的值為 Corn 或 Soybean
看來您有一個名為 TYPE 的列,並且您正在檢查它是否具有“IF”的值?
如果該值等於“IF”,那麼您想要找到名為 Mean(YIELD(BU/A)_OR, 13) 的列和名為 Mean(YIELD(BU/A)_OR, 8) 的列之間的差異
或者你想計算列 YIELD 的平均值
最後,您引用了一個名為 ELSE 的列並確定是否等於一個名為 EMPTY 的列。
我確信這不是你想要的。
你能提供一個數據表是什麼的樣本,然後用文字描述你想要什麼。
我還建議您花時間閱讀腳本指南。它位於 JMP 文檔庫的“幫助”下拉菜單下。
回复:如何使用“條件語句”選擇數據行然後執行,例如簡單的 Col A - Col C嗨,吉姆,感謝您的回复,感謝您提供的任何幫助,並對您的困惑感到抱歉 - 我將嘗試澄清和簡化我想要的公式類型。
我有一個名為 YEAR 的列,值是 2020 或 2021。
我還有一個名為 CROP 的列,值是玉米或大豆。
我有另一個名為 TYPE 的列,值是 Foliar 或 IF (即,在犁溝內)
我還有另外 10 列代表治療 1 到 10 的平均產量(TRT1、TRT2、......、TRT10)。
我想要一個公式來計算每種治療(不同產品劑量率)與對照治療(0 率)的附加值。這是踢球者,治療數量(代表劑量率 0、1、4、8、16、32、64 FL OZ/英畝)在 2 年之間以及 CROP 和 TYPE 之間有所不同。例如,2020 年玉米和大豆“IF”的 16 FL OZ/英畝產品劑量率為 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”;
等等(對不起,我不知道如何在 1 個公式中將“IF”串在一起)。
關於 ELSE 評論,這與我希望在不滿足“IF”組合時不讓公式執行任何類型的隱藏操作步驟有關。換句話說,例如,如果YEAR=2020,CROP=Corn,TYPE=Foliar,那麼只計算TRT3-TRT1並省略任何ELSE類型的動作,即保持所有剩餘單元格值不變;並移動到下一個組合 IF 語句,這些語句可能會指示公式採用 TRT5-TRT1 等。
回复:如何使用“條件語句”選擇數據行然後執行,例如簡單的 Col A - Col C非常感謝:SAS 技術支持的 Sarah Seligman 為我的問題提供了解決方案。下面是她電子郵件中的剪切/粘貼,但格式丟失了,因此我附上了她的 X.jmp 數據文件和她的答案的 pdf,其中可能更容易在公式中查看 JSL 格式。再次感謝 Sarah 和 Jim,感謝他們最初回答了我的 JSL 問題。
___
嗨,傑夫,感謝您的耐心等待。 我附上了一個數據表,其中包含一個公式,我相信你所描述的。 關於您提出的問題的一部分:“是否可以以省略 ELSE 操作的方式構造 IF 語句?” 簡單的答案是肯定的——您只需將條件 IF 語句的“Else”部分留空。 因此,使用一個 IF 語句,它在公式編輯器中看起來像這樣: 在 JSL 中,即: If(:YEAR == "2020" & :CROP == "Corn" & :TYPE == "Foliar", :TRT 03 - :TRT 01 ) 使用兩個 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 條件。 在下面的屏幕截圖中,我單擊了三次以添加另外三個 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 == "玉米" & :TYPE == "IF", :TRT 05 - :TRT 01, :YEAR == "2021" & :CROP == "玉米" & :TYPE == "葉面", : TRT 04 - :TRT 01 )您還說:關於 ELSE 語句,我希望在不滿足“IF”組合時不讓公式執行任何類型的隱藏操作步驟。 換句話說,例如,如果YEAR=2020,CROP=Corn,TYPE=Foliar,那麼只計算TRT3-TRT1並省略任何ELSE類型的動作,即保持所有剩餘單元格值不變;並移至下一個可能指示公式採用 TRT5-TRT1 等的組合 IF 語句。是否可以以省略 ELSE 操作的方式構造 IF 語句? 我創建的公式在滿足第一個 IF 條件的條件時設置適當的值,然後移動到下一個 IF 條件,依此類推。 您不必指定任何 ELSE 條件/值。 我希望這些信息對你有用。 如果您有任何其他問題,請告訴我。 親切的問候, Sarah Seligman JMP 技術支持分享。 問。 學習。 連接。 - community.jmp.com 如果您對此事有任何後續問題,我將很樂意繼續與您合作;只需在 5 個工作日內回复此電子郵件。 如果此回复已完全回答了您的問題,請回复讓我知道您已收到此電子郵件,並且我已解決此問題並讓您滿意。 附件 7613517300.jmp (6 Kb)