將單列中的多行設置為單個值你好,
菜鳥問題...
我有一列包含某些類型對象的唯一標識符 (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