仅对选定行应用数学公式 (JSL)如何仅使用 JSL 将数学公式应用于选定的行? 感谢您的帮助。
回复:仅在选定行上应用数学公式 (JSL)我真的不建议直接转换值字段的值,因为除非您也将单位列更改为摄氏度。
您可以使用 if 语句设置每个值来替换列中的值。 在其他部分“返回”当前存在的相同值。 这样的事情应该有效:
:Value << Set Each Value(
If(:Unit=="°F" /*& Selected()*/,
Conversions:Farenheit To Celsius(:Value)
, //else keep value
:Value
);
)
回复:仅在选定行上应用数学公式 (JSL)我对数据表有类似的情况。 我的目标是将“值”列中的所有值从华氏度转换为摄氏度。 我用来执行此操作的脚本是:
For Each Row(If(:Unit=="°F", Selected(RowState())=1));
For Each Row(:Value = If(Selected(RowState(Row())), Conversions:Farenheit To Celsius(:Value)));
该脚本在转换方面做了我需要它做的事情,但是,所有与单位 °F 无关的值都被删除了。 是否可以添加一个脚本来忽略未选择的列并最终保留与单位 °F 无关的值?

回复:仅在选定行上应用数学公式 (JSL)这是我对您想要做的事情的解释示例。

最后一列使用列公式。 该公式实现了条件计算。

行状态是 JMP 运作方式的重要组成部分。 此代码是等效的,但没有安装列公式。
Names Default To Here( 1 );
col = Current Data Table() << New Column( "Conditional BMI" );
For Each Row( col[] = If( Selected( Row State( Row() ) ), (703 * :weight) / :height ^ 2 ) );
回复:仅在选定行上应用数学公式 (JSL)这是一个示例,显示如何专门处理选定的行
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/big class.jmp" );
// pause to show the original data table
wait(5);
// select some rows
dt << select where( :sex == "F" );
For( i = 1, i <= N Rows( dt << get selected rows ), i++,
dt:age[i] = dt:age[i] - 2
);
dt:weight[dt<<GET selected="" rows=""></GET>
回复:仅在选定行上应用数学公式 (JSL)您没有提到您是只想要该值还是希望这是另一个列公式。 如果是 s 列公式,则需要提供更多信息。这是一个仅使用 6 行中的 2 行进行计算的示例。
Names Default to Here(1);
dt = new Table("Test", Add Rows(6), New Column("Values", numeric, continuous, Set Values(J(6,1, Random Integer(1,20))) ) );
mysum = :Values[2]^2 + :Values[4]^2 - 4 * :Values[2]*:Values[4] ;
show(mysum );