将单列中的多行设置为单个值你好,
菜鸟问题...
我有一列包含某些类型对象的唯一标识符 (UID),例如 {'cats', 'dogs', 'birds'}。 每个 UID 都有与其关联的多行,我已将其捕获在关联数组中。
示例:aa = { '猫' => [1, 2, 3], '狗' => [4, 5, 6], '鸟' => [7, 8, 9] }
对于每个 UID、所有关联的行,我需要将不同的列 (col2) 设置为单个值。
例如:对于 UID“猫”,第 1、2 和 3 行,在 col2 中,需要设置为“喜欢午睡”。
- 我知道 << 设置所有值函数,但它会为列中的所有行复制单个值。
- 如果我使用 dt:col 2[ aa[ 'cats' ] ] = 'likes napping',则会发生 L 值错误,这告诉我我需要一个等于行数的值矩阵,因此可以分配每一行那个值。
- 或者,我可以使用嵌套在 for 循环中的 for 循环来在需要的地方赋值。
但这一切看起来都很笨拙。 一定会有更好的办法。
这是 2 个关联数组:
- { UID => [行] }
- { UID => 值 }

自动化和脚本编写基础数据分析和建模内容组织数据存取视窗回复:将单列中的多行设置为单个值在发表这篇文章时,我忘记添加另一种可能性。 注意:该数据集有很多行。
// This completely removes the need to store rows in an AA, but takes a decent amount of time
for( i = 1, N rows( dt ), i++,
row_UID = dt:UID[i];
dt:col2[i] = aa_value[row_UID];
);回复:将单列中的多行设置为单个值像这样使用数据表索引

数据表下标
回复:将单列中的多行设置为单个值我将使用 JMP 的表操作功能来执行此操作
Names Default To Here( 1 );
animals = {"cats", "dogs", "birds"};
dt = New Table( "lots of animals",
add rows( 100 ),
New Column( "UID",
character,
set each value( animals[Random Integer( 1, 3 )] )
)
);
// Build the attribute table
dtLookup = new table("Lookup",
add rows(3),
new column("UID", character,
values({"cats", "dogs", "birds"})
),
new column("col2", character,
values({"likes napping","likes frisbee","likes cracker"})
)
);
// Update the table to expand all values into matching rows
Data Table( "lots of animals" ) << Update(
With( Data Table( "Lookup" ) ),
Match Columns( :UID = :UID )
);

回复:将单列中的多行设置为单个值数据表删除太酷了!
为什么是关联数组?
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
myMatrix= dt<< getrowswhere(age==12);
dt[myMatrix,{age}]=999回复:将单列中的多行设置为单个值只是因为最初的问题,但关联数组也很酷!
回复:将单列中的多行设置为单个值@Craige_Hales ,这个网站上的某个地方有一个线程有这个下标技巧。 由于这样的技巧,我可能应该为它添加书签!谢谢你!
回复:将单列中的多行设置为单个值@Craige_Hales ,这里有一个指向您的订阅主题的链接,供那些想了解更多信息的人使用。
PS - 这些技巧可以节省你很多时间! 100%值得一读!
https://community.jmp.com/t5/Uncharted/Data-table-subscripting/ba-p/21013