大家好,
我在這裡遇到一個問題,想弄清楚。 我還是 JSL 的新手,因此我陷入了困境。
我有這張表,它為我提供了項目的 ID、處理日期等。 對於相同的 ID,可能會進行多次重新處理,這會導致 DateTime 的時間戳加倍/三倍。 我想清理我的表,只維護具有相同 ID 的最新日期時間的表。
我知道我應該使用循環。但我不知道如何讓 ID 在清單中找到他們的合作夥伴。
注意:相同的 ID 可能出現在隨機行項目中。

感謝您的幫忙!
您好,如果“清理我的表並僅維護具有相同 ID 的最新日期時間的表”,您的意思是您希望僅保留最新信息,刪除所有其他行,請查看“選擇重複行”功能。 然後你的流程變成了:
1)按日期對錶進行排序 - 在本例中為降序,因為您希望最新的資料位於頂部
2)使用選擇重複行函數來選擇與感興趣的分組列相關的「重複」行
3)刪除這些行
若要嘗試此操作,請執行下方腳本中的第一組行,然後逐行執行最後 3 行。
乾杯,
布雷迪
Names default to here(1);
dt = astable (J(20,1,randominteger(1, 5)) || J(20,1,randominteger(3e9, 3.5e9) ),
<< column names ({"group", "date"}));
dt:date << Format( "m/d/y h:m", 19 );
///////////////
dt << sort (by (:group, :date), order (ascending, descending), replacetable);
dt << Select Duplicate Rows( Match( :group ) );
dt << delete rows;
Colmax() 有一個可以賦予它的 by 變數。我認為這符合你的要求。如果需要,您甚至可以按列提供多個。
Names default to here(1);
dt = New Table( "Untitled 101",
Add Rows( 10 ),
New Column( "ID",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [1, 1, 2, 2, 3, 3, 3, 3, 1, 1] ),
Set Display Width( 51 )
),
New Column( "Datetime",
Numeric,
"Continuous",
Format( "m/d/y h:m:s", 23, 0 ),
Input Format( "m/d/y h:m:s", 0 ),
Set Selected,
Set Values(
[3758218580, 3758222180, 3758225780, 3758229380, 3758232980, 3758236580,
3758240180, 3758243780, 3758247380, 3758250980]
)
),
);
dt << New COlumn("Max by ID",
Format( "m/d/y h:m:s", 23, 0 ),
Formula(Colmax(:Datetime, :ID))
)