表函数 - 多个表我有两个问题,我猜 JMP 会分配表并稍后使用它们。 步骤 2 和 3 将位于使用以下命令调用的单独脚本中包括()功能。
// 步骤1:从服务器拉取数据并将其分配给dt_testdata_ss
dt_testdata_ss = Open Database( <SERVER string="">, <QUERY string=""> , "dt_testdata_ss" );</QUERY></SERVER>
// 步骤2:创建带有条件的新表
dt_testdata_ss_tx = dt_testdata_ss
<< select where ( (:col_1 == 24) & (:col_2 == 1))
<< subset( output table name("dt_testdata_ss_tx"));
// 步骤 2a:在 graphplot.jsl 中使用 dt_testdata_ss_tx
// 步骤 2b:在 distribution.jsl 中使用 dt_testdata_ss_tx
// 步骤3:创建带有条件的新表
dt_testdata_ss_rx = dt_testdata_ss
<< select where ((:col_1 == 16) & (:col_2== 3 ))
<< subset( output table name( "dt_testdata_ss_rx"));
// 步骤 3a:在 graphplot.jsl 中使用 dt_testdata_ss_rx
// 步骤 3b:在 distribution.jsl 中使用 dt_testdata_ss_rx
我现在同时打开 3 个表,但无法在您提供的脚本中调用正确的表。 我什至走到了最远的地方
dt_testdata_ss
dt_testdata_ss_tx
dt_testdata_ss_rx
当我运行你的脚本时,当我通过更改运行它时,出现以下错误dt到dt_测试数据_tx或者dt_测试数据_rx :
错误:访问或评估“Close”时参数无效,Close *###*/(dtSum,nosave)
我只能假设 dt 没有被分配给 dt_testdata_tx 或 dt_testdata_rx,因为该表不执行。 如果所有 3 个表都打开,我不知道如何调用某个表来进行操作。 建议?
提前致谢
dt = current data table(); // removed this line
dtsum = dt // changed dt to either dt_testdata_ss_tx or dt_testdata_ss_rx
dtFinal = dt // changed dt to either dt_testdata_ss_tx or dt_testdata_ss_rx
自动化和脚本编写数据存取回复:表函数 - 多个表默认名称为here(1),使所有变量成为本地变量。如果您想让所有变量都是全局变量,那么请忽略此行。
否则,您可以使用全局变量传递它们。JSL 中的全局变量以两个冒号“::”开头。我添加 g_ 来表示这是一个全局变量。
::g_dt_testdata_ss_tx = foo bar ...
回复:表函数 - 多个表这很好用谢谢.. 实际上,我发现我的脚本有一个小问题,不允许我更改表。
现在我的问题是我有 4 个打开的表,它们将在 Include() 脚本中单独使用。 我不知道如何在新脚本中选择数据表。 看来变量没有传递到新脚本。
如果我有 4 个表名,则此 Names To Default Here(1);仅将其存储在生成它们的脚本中的数据表变量上? 我已经尝试过将名称设置为默认值(0);我认为将其分配给全球......
有什么建议么?
谢谢
回复:表函数 - 多个表我认为这必须是表/变量的分配方式。 正是这些简单的事情导致了最多的问题。
一道微积分问题,由于一个简单的数学错误而出了什么问题。 非常感谢你的解释..
回复:表函数 - 多个表你已经很接近了。对于子集命令,无需命名表。只需将其分配给变量就足够了。但您应该指定您希望子集如何使用选定的行(1)、选定的列(0) 。
不知道为什么关闭(dtsum,nosave)如果您分配了 dtsum =(表变量之一),则不起作用。
关于dt = 当前数据表() - 我不会使用这个,因为您打开了三个表,并且哪个表是当前的可能不清楚。最好只使用现有的表变量。
// Step 1: Pull in data from server and assign it to dt_testdata_ss
dt_testdata_ss = Open Database( <SERVER string="">, <QUERY string=""> , "dt_testdata_ss" );
// Step 2: creates new table with conditions
dt_testdata_ss_tx = dt_testdata_ss << select where ( (:col_1 == 24) & (:col_2 == 1 ))
<< subset( selected rows( 1 ), selected columns( 0 ));
// Step 2a: uses dt_testdata_ss_tx in graphplot.jsl
// Step 2b: uses dt_testdata_ss_tx in distribution.jsl
// Step 3: creates new table with conditions
dt_testdata_ss << clear row states; // Remove prior selec
dt_testdata_ss_rx = dt_testdata_ss << select where ( (:col_1 == 16) & (:col_2 == 3 ))
<< subset( selected rows( 1 ), selected columns( 0 ));
// Step 3a: uses dt_testdata_ss_rx in graphplot.jsl
// Step 3b: uses dt_testdata_ss_rx in distribution.jsl</QUERY></SERVER>
回复:表函数 - 多个表如果我正确地解释了您的问题,我相信您还没有完全了解指向数据表的变量如何工作以及如何使用它们。我编写了一个非常简单的脚本,它创建了 3 个不同的数据表。然后,它继续对每个不同的数据表进行分析,分析的顺序与创建数据表的顺序不同。我使用数据表指针变量来完成此操作。然后,我还添加了一个注释部分,说明如果您在运行分析之前选择重置当前数据表,如何完成相同的输出顺序。
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/big class.jmp" );
dt << select where( :sex == "F" );
dtFemale = dt << subset( selected rows( 1 ), selected columns( 0 ) );
dt << invert row selection;
dtMale = dt << subset( selected rows( 1 ), selected columns( 0 ) );
dtFemale << Oneway(
Y( :height ),
X( :age ),
Means and Std Dev( 1 ),
Mean Error Bars( 1 ),
Std Dev Lines( 1 )
);
dtMale << Oneway(
Y( :height ),
X( :age ),
Means and Std Dev( 1 ),
Mean Error Bars( 1 ),
Std Dev Lines( 1 )
);
dt << Oneway(
Y( :height ),
X( :age ),
Means and Std Dev( 1 ),
Mean Error Bars( 1 ),
Std Dev Lines( 1 )
);
// Or
/*current data table( dtFemale );
Oneway(
Y( :height ),
X( :age ),
Means and Std Dev( 1 ),
Mean Error Bars( 1 ),
Std Dev Lines( 1 )
);
current data table( dtMale );
Oneway(
Y( :height ),
X( :age ),
Means and Std Dev( 1 ),
Mean Error Bars( 1 ),
Std Dev Lines( 1 )
);
current data table( dt );
Oneway(
Y( :height ),
X( :age ),
Means and Std Dev( 1 ),
Mean Error Bars( 1 ),
Std Dev Lines( 1 )
);*/