你好
在我的表格中,我有 3 列:时间、实验室数据和一个温度。
对于实验室数据,我想只保留可用的值,并将所有连续行设置为空,直到我们有新的实验室结果。
我应该如何编写脚本来处理这个问题?
谢谢

除了 DS 的公式解决方案之外,您还可以如下所示进行处理。
首先,我们需要按年龄对 Big Class 进行排序(这是您的实验室数据)。
我们选择列 age 并让 jmp 找到所有重复行的年龄。
对于这些我们删除年龄值。
乔治
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
dt << sort( by( age, name ), Replace Table );
dt << select columns(age);
dt << select duplicate rows();
dt:age[dt << get selected rows()]=.;
几个额外的公式选项(如果需要,只需使用替换 << 将每个值设置为公式)
Names Default To Here(1);
dt = New Table("Untitled",
Add Rows(9),
New Column("Column 1", Numeric, "Continuous", Format("Best", 12), Set Values([1, 1, 1, 2, 2, 2, 3, 3, 3])),
New Column("Column 2", Numeric, "Continuous", Format("Best", 12), Set Values([1.2, 1.2, 1.3, 2.3, 2.4, 2.1, 3.5, 3.6, 3.1]))
);
dt << New Column("Result", Numeric, Continuous, << Set Each Value(
IfMZ(:Dif(:Column 1) == 0,
.
,
:Column 1
)
));
dt << New Column("Result2", Numeric, Continuous, << Set Each Value(
If(Row() == Col Min(Row(), :Column 1),
:Column 1
,
.
);
));你好@LogitTurtle576 ,
一种可能的方法是使用以下公式生成一个新列:
If(
:Column 1 == Lag(:Column 1, 1), .,
Row() == 1, :Column 1[1],
:Column 1[Row()]
)
其中 :Column 1 是您感兴趣的数据列。 这会将所有值设置为 null,除非从一行更改为下一行,否则它将使用该值。 中间条件将第一行设置为数据列第 1 行的值。
我敢肯定还有其他方法,但我知道这个可以做你感兴趣的事情。 另外,由于您有另一列,因此您不会因重新编码或覆盖原始列而丢失任何原始数据。
希望这可以帮助!,
DS