取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 
The Discovery Summit 2025 Call for Content is open! Submit an abstract today to present at our premier analytics conference.
See how to use JMP Live to centralize and share reports within groups. Webinar with Q&A April 4, 2pm ET.
选择语言 隐藏翻译栏
查看原发布的话题

如何在数据表的子集上应用脚本

cbaril
Level III

你好,

 

在我的数据表中,我有 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 个已接受解答

已接受的解答
jthi
Super User

回复:如何在数据表的子集上应用脚本

仅根据您在此处拥有的脚本,我将添加索引列,根据唯一字母创建子集,对每个字母运行公式,然后将数据更新回原始表

4 条回复4
jthi
Super User

回复:如何在数据表的子集上应用脚本

仅根据您在此处拥有的脚本,我将添加索引列,根据唯一字母创建子集,对每个字母运行公式,然后将数据更新回原始表

这篇帖子最初是用 English (US) 书写的,已做计算机翻译处理。当您回复时,文字也会被翻译成 English (US)。

cbaril
Level III

回复:如何在数据表的子集上应用脚本

嗨,亚尔莫,

谢谢你的提示!

 

我只是 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)。

jthi
Super User

回复:如何在数据表的子集上应用脚本

可能还有其他方法可以做到这一点,但由于我不知道你的数据,我真的不能提出任何建议。 这是一个使用可以工作的子集的解决方案

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)。

cbaril
Level III

回复:如何在数据表的子集上应用脚本

这对我来说有点太高级了,但感谢您的投入! 我设法找到了一种无需太多手动处理即可获得结果的方法,现在它已经足够好了。

 

最好的

克莱尔

 

这篇帖子最初是用 English (US) 书写的,已做计算机翻译处理。当您回复时,文字也会被翻译成 English (US)。