我正在尝试将脚本保存到我的数据表中,该脚本将重新创建我之前创建的表。 这是一个相当广泛的插件,涉及打开/关闭几个不同的表、创建汇总表、连接、更新,最后我的报告所需的唯一数据是一个简单的两列表。 我希望用户能够运行此加载项一次,如果他们不小心关闭了生成的表,他们将不必再次运行该加载项,因为原始表上会保存一个脚本,可以重新创建最终表和分析窗口。
希望这是有道理的!
我遇到的问题是最终表是在加载项脚本期间创建的许多表之一的摘要。 因此,如果我使用<<获取表脚本功能,结果是“不再存在的数据表”<<摘要......等。 我想使用 <<复制表脚本功能,因为它实际上保存了每个单元格中的列名和值,这正是我想要的! 但是,我不知道如何在我的加载项脚本中执行此操作。 复制表脚本不会返回任何可以保存为变量或表达式的内容,仅将信息复制到剪贴板,以便稍后粘贴。
sum<<DELETE scripts=""></DELETE>
这是我尝试过但不起作用的一件事的例子。 dt 是我想要将此脚本保存到的原始表。 sum 是我想在脚本中重新创建的表。
这还有可能吗???
这是一个简单的脚本,展示了执行此操作的一种方法
names default to here(1);
dt=open("$SAMPLE_DATA\big class.jmp");
dtSum = dt << Summary(
Group( :sex ),
Mean( :height ),
Freq( "None" ),
Weight( "None" ),
link to original data table(0)
);
Eval(
Parse(
Eval Insert( "\[dt << New Table Script("Summary Table Script", ^dtSum << get script^)]\" )
)
);
我只需添加代码以将汇总表保存为另一个脚本,然后在主脚本中让它运行重新创建汇总表的表脚本。
我的脚本的结果表本质上是 2 列:“位置”和“N 行”。 此表是在长加载项期间创建的表的摘要,而不是主表中任何列的摘要。 我无法使用任何使用当前表中的数据创建表的脚本(例如摘要、堆栈等)。 我需要以某种方式将结果表中的确切值保存到可以保存到主表中的脚本中。 像这样的东西:
New Table( "Positions of'n-1 base'",
Add Rows( 32 ),
New Column( "Position",
Numeric,
"Nominal",
Format( "Best", 10 ),
Set Values(
[1, 2, 3, 6, 8, 9, 11, 16, 18, 21, 23, 25, 26, 27, 28, 29, 30, 31, 32,
34, 35, 36, 37, 38, 39, 40, 41, 46, 48, 63, 65, 68]
)
),
New Column( "N Rows",
Numeric,
"Continuous",
Format( "Fixed Dec", 20, 0 ),
Set Values(
[13, 52, 65, 52, 65, 65, 65, 52, 52, 65, 52, 31, 28, 23, 13, 21, 14, 17,
9, 5, 4, 56, 1, 4, 5, 3, 55, 65, 65, 52, 13, 13]
)
)
)
但我不知道如何在我的脚本中做到这一点。 我不知道如何获取此脚本,或将其保存到主表中。
我的计划是在结果表首次打开时立即获取脚本并将其保存到主表上的新表脚本中,这样如果结果表关闭,可以使用主表脚本重新创建它。
这更有意义吗?
你好@aallman ,
我有点困惑什么确切地你正在尝试这样做,但它听起来确实有点类似于我之前做过的事情,我需要堆叠源数据表,然后对输出数据表进行制表,但不想在以下情况下重新编写所有内容我将一些新数据连接到源数据表。
下面是我在源 dt 中编写的 Stack 脚本的一些示例代码。
Data Table( "Analysis" ) << Stack(
columns(
:X1,
:X2,
:X3,
:X4,
:X5,
:X6
),
Source Label Column( "Test Apparatus" ),
Stacked Data Column( "Data" )
);
Current Data Table() << Set Name( "Data Stack" ) <<
New Script(
"Fit Y by X of Data by Source",
Oneway(
Y( :Data ),
X( :Source ),
Means( 1 ),
Mean Diamonds( 1 ),
By( :Test Apparatus )
)
);
Data Table( "Data Stack" ) << New Column( "Date-Time",
"Ordinal",
Formula( :Date + :Time ),
Format( "m/d/y h:m:s" )
);
Data Table( "Data Stack" ) << Group Scripts(
"Run these after stacking",
{"Tabulate by Lot (run after stacking)",
"Tabulate by Apparatus (run after stacking)"}
);
Data Table( "Data Stack" ) << Move Script Group(
"Run these after stacking",
to last
);它将把脚本转移到新堆叠的数据表中。 我还将标题为“堆叠后运行这些”的分组脚本保存到主 dt 中,这些脚本也被转移到新堆叠的数据表中。
我想您也许能够以类似的方式解决您的问题。
祝你好运!,
DS