你好,
在我的数据表中,我有 6 个数据子集(通过 X 列彼此区分,其中每个子集都有不同的字母“a”、“b”、“c”、“d”、“e”和“f”)。 我如何将脚本独立应用于所有 6 个子集,并在一列中获得脚本的 6 个结果?
预先感谢您对我们的支持!
最好的
克莱尔
------
当前应用于整个数据表的脚本:
dt = Current Data Table();
dt << New Column("sumtempj",
Numeric,
Continuous,
<
这篇帖子最初是用 English (US) 书写的,已做计算机翻译处理。当您回复时,文字也会被翻译成 English (US)。
1 个已接受解答
4 条回复4
已创建:
Mar 22, 2023 09:04 AM
| 上次修改时间: Mar 22, 2023 6:21 AM
(1382 浏览量)
| Posted in reply to message from jthi 03-22-2023
嗨,亚尔莫,
谢谢你的提示!
我只是 JSL 的初学者,现在有了这个脚本(见下文)。 结果列“sumtempj”出现在生成的每个子数据表中,但该列中没有结果。 你能看出错误吗?
最好的
克莱尔
脚本:
dt = Current Data Table();
// Perform the subsets
listDT = dt << Subset(
By( :BBI and SteriRun ),
All rows,
Selected columns only( 0 ),
columns( :RoundedTempJ, :BBI and SteriRun, :Sterilisation duration )
);
// Loop across all new data tables and run sumtempj
For( i = 1, i <= N Items( listDT ), i++,
listDT[i] << New Column( "sumtempj",
Numeric,
Continuous,
<
这篇帖子最初是用 English (US) 书写的,已做计算机翻译处理。当您回复时,文字也会被翻译成 English (US)。
可能还有其他方法可以做到这一点,但由于我不知道你的数据,我真的不能提出任何建议。 这是一个使用可以工作的子集的解决方案
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
// add indexing to original data
dt << New Column("IDX", Numeric, Continuous, << Set Each Value(Row()));
// add data column to table as empty
new_col = dt << New Column("sumtempj", Numeric, Continuous);
col_name = new_col << get name;
// get unique groups to uniq_vals
Summarize(dt, uniq_vals_str = by(:age));
// in this case we have to convert uniq_vals back to numeric values BUT it isn't always necessary
// (summarize changes them to strings)
uniq_vals = Transform Each({uniq_val_str}, uniq_vals_str, num(uniq_val_str));
// loop over those unique values
For Each({uniq_val}, uniq_vals,
// create subset
uniq_val_rows = dt << Get Rows Where(:age == uniq_val);
dt_temp = dt << Subset(rows(uniq_val_rows), output table(char(uniq_val)), invisible);
// perform calculation
Column(dt_temp, col_name) << Set Each Value(
Col Max(:height);
);
// update values
dt << Update(
With(dt_temp),
Match Columns(:IDX = :IDX)
);
// wait is here for demo purposes
wait(1);
close(dt_temp, no save);
);
dt << Delete Columns("idx");
这篇帖子最初是用 English (US) 书写的,已做计算机翻译处理。当您回复时,文字也会被翻译成 English (US)。