我正在尝试更新有时包含新行(基于索引)的表。
似乎我需要使用连接,因为以下似乎不起作用(这里,索引是名称列)。
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} )
);
您陈述的假设是正确的,您将不得不使用 Join 平台来做您想做的事。
在这里找到了来自社区的类似帖子,建议在添加新行时使用 Join 而不是 update:
更新 JMP 数据表
是否有理由不能使用 join 而不是 update (除非您必须处理额外的表)?
来自 JMP 帮助:更新数据表:
如果您有两个数据表并想用新表中的数据更新原始表,请选择表格 > 更新. 更新命令是就地联接的特例。 这是一个选中更新选项的连接,并且不会生成新表。
“除非你必须处理额外的桌子”
确切地。 尽管我在选择更新选项的情况下进行连接,但还是生成了一个新表。
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