回复:如何使用“條件語句”選擇要執行的數據行,例如簡單的 Col A - Col C非常感謝:Sarah Seligman,SAS 技術支持為我的問題提供了解決方案。下面是從她的電子郵件中剪切/粘貼的內容,但格式丟失了,所以我附上了她的 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 == "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 條件/值。 我希望這些信息對你有用。 如果您有任何其他問題,請告訴我。 親切的問候, Sarah Seligman JMP 技術支持分享。 問。 學。 連接。 - community.jmp.com 如果您對此事有任何後續問題,我很樂意繼續與您合作;只需在 5 個工作日內回复此電子郵件即可。 如果此回复已完全回答您的問題,請回复讓我知道您已收到此電子郵件並且我已解決此問題並令您滿意。 附件 7613517300.jmp (6 Kb)
回复:如何使用“條件語句”選擇要執行的數據行,例如簡單的 Col A - Col C嗨,吉姆,感謝您的回复,感謝您提供的任何幫助,對於造成的混亂,我深表歉意——我會盡力澄清和簡化我想要的公式類型。
我有一個名為 YEAR 的列,值是 2020 或 2021。
我還有一個名為 CROP 的列,值是 Corn 或 Soybean。
我有另一個名為 TYPE 的列,值是 Foliar 或 IF(即犁溝內)
我還有另外 10 列代表處理 1 到 10 的平均產量(TRT1、TRT2、……、TRT10)。
我想要一個公式來計算每種處理(不同產品劑量率)與對照處理(0 率)的附加值。更重要的是,治療數字(代表劑量率 0、1、4、8、16、32、64 FL OZ/英畝)在 2 年之間以及 CROP 和 TYPE 之間有所不同。例如,16 FL OZ/英畝的產品劑量率在 2020 年對於玉米和大豆“IF”均為 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 類型的操作,即保留所有剩餘的單元格值不變;並移至下一個可能指示公式採用 TRT5-TRT1 等的組合 IF 語句。
回复:如何使用“條件語句”選擇要執行的數據行,例如簡單的 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需要一些幫助!
我想從 3 或 4 列中選擇數據行(基於條件語句,然後執行相當簡單的公式,例如,如果在選擇正確的行時滿足條件
如果(
:年份== 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
)
高級統計建模消費者和市場研究質量和工藝工程