使用 Update() 将新行添加到主表中我正在尝试更新有时包含新行(基于索引)的表。
看来我需要使用 join,因为以下似乎不起作用(这里,索引是名称列)。
Names Default To Here( 1 );
dt1 = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt2 = New Table( "Little Class",
Add Rows( 3 ),
New Column( "name",
Character,
Nominal,
Set Values( {"ALICE", "NEW_NAME", "OTHER_NEW_NAME"} )
),
New Column( "height",
Continuous,
Set Values( [999, 999, 999] )
),
New Column( "weight",
Continuous,
Set Values( [999, 999, 999] )
),
New Column( "RANK",
Continuous,
Set Values( [3, 1, 2] )
),
New Column( "CODE",
Continuous,
Set Values( [0, 1, 1] )
)
);
dt1 << Update(
With( Data Table( "Little Class" ) ),
Match Columns( :name = :name ),
Add columns from Update table( {:RANK} )
);
数据混合和清理回复:使用 Update() 将新行添加到主表中新的加入平台可能如下所示:
https://community.jmp.com/t5/JMP-Wish-List/Tables-join-option-to-update-main-table/idc-p/653857/highlight/true#M4537

回复:使用 Update() 将新行添加到主表中我写了一个希望添加一个更新主表的选项:
表连接:更新主表的选项
请随意支持它:)
回复:使用 Update() 将新行添加到主表中大多数时候我会使用不可见表来完成此操作,因为这样可以从 JMP 窗口列表中轻松打开它们(如果它们尚未关闭)。
不可见的表格在窗口列表中呈灰色(透明),您可以通过双击它们使它们可见。

我还建议向表添加名称,因为当打开大量表并且由于某种原因代码无法正确执行时,可以更轻松地开始调试。 如果不重命名,它们就会变得一团糟,例如:某物 1 的子集、某物 2 的子集、无标题 1 等等。
下面是一个示例,它将打开 dt 作为不可见表并创建 dt_new 作为不可见表。 然后将它们加入到名为 JOINED_TABLE 的新表中,该表将显示给用户,最后关闭 dt 和 dt_new 而不保存它们。 <BR />
</CODE><CODE class=" language-jsl">Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp", invisible);
dt_new = New Table( "Little Class",
Add Rows( 3 ),
New Column( "name",
Character,
Nominal,
Set Values( {"ALICE", "NEW_NAME", "OTHER_NEW_NAME"} )
),
New Column( "height",
Continuous,
Set Values( [999, 999, 999] )
),
New Column( "weight",
Continuous,
Set Values( [999, 999, 999] )
),
New Column( "RANK",
Continuous,
Set Values( [3, 1, 2] )
),
New Column( "CODE",
Continuous,
Set Values( [0, 1, 1] )
),
invisible
);
dt_joined = dt << Join(
With(dt_new),
Merge Same Name Columns,
By Matching Columns(:name = :name),
Drop multiples(0, 0),
Include Nonmatches(1, 1),
Preserve main table order(1),
Output table("JOINED_TABLE")
);
Close(dt, no save);
Close(dt_new, no save);
回复:使用 Update() 将新行添加到主表中我懂了。 为了让最后一步变得简单,您有什么建议?
我有“dt”(原始)和“dt_joined”(“dt”+“dt_new”)。
回复:使用 Update() 将新行添加到主表中我测试了相同的选项,它的行为方式相同,它确实创建了新表。
我可以分担在 JMP 中处理打开表的痛苦,但是在编写脚本时相当容易(将添加一些额外的代码),打开/创建它们作为不可见/私有,并在知道不会保存后立即关闭它们而不保存不再需要它们了。
回复:使用 Update() 将新行添加到主表中“除非你必须处理额外的桌子”
确切地。 尽管我正在使用选定的更新选项进行联接,但仍会生成一个新表。
dt<< Join(
With( dt_new ),
Update, // this option is selected
By Matching Columns( :index= :index),
Drop multiples( 0, 0 ),
Include Nonmatches( 1, 1 ),
Preserve main table order( 1 )<BR />);<BR /><BR />// Opens new table apart of dt and dt_new回复:使用 Update() 将新行添加到主表中在社区中找到类似的帖子,建议在添加新行时使用 Join 而不是 update :
更新 JMP 数据表
有没有理由不能使用联接而不是更新(除非您必须处理额外的表)?
来自 JMP 帮助:更新数据表:
如果您有两个数据表并且想要使用新表中的数据更新原始表,请选择表格 > 更新。 Update 命令是就地加入的一个特例。 这是选中“更新”选项的“加入” ,并且它不会产生新表。
回复:使用 Update() 将新行添加到主表中您所说的假设是正确的,您将必须使用 Join 平台来做您想做的事。