回复:如何使用“条件语句”选择要执行的数据行,例如简单的 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
)
高级统计建模消费者和市场研究质量和工艺工程