如何根據列中的組創建數字你好,
我有一個隨機重複相同字符串順序的分類列。 我想為每個具有相同字符串的組添加數字標籤,如圖中的示例。 我該如何創建結果列?

自動化和腳本編寫回复:如何根據列中的組創建數字怎麼樣使用“重新編碼新列”;

腳本:
// New data table
// → Data Table( "Untitled" )
New Table( "Untitled" );
// Recode column: result
Local( {dt, col1},
dt = Data Table( "Untitled" );
dt << Begin Data Update;
col1 = dt << New Column( dt:Column 1 );
col1 << Set Name( "result" );
dt << Move Selected Columns( {col1}, after( dt:Column 1 ) );
dt << Recode Column(
dt:Column 1,
{Map Value(
_rcOrig,
{"aaa", "1", "bb", "2", "ccc", "3", "ddd", "4", "eee", "5"},
Unmatched( _rcNow )
)},
Update Properties( 1 ),
Target Column( col1 )
);
dt << End Data Update;
);回复:如何根據列中的組創建數字我每天都會收集新數據,並且會有很多新字符串。 需要一種比使用重新編碼新列進行硬編碼更好的方法
回复:如何根據列中的組創建數字根據您想要的專欄類型以及您願意編寫多少腳本,有很多選擇。 以下是一種可能有效的選項
Names Default To Here(1);
dt = New Table("Untitled",
Add Rows(9),
Compress File When Saved(1),
New Column("Column 1",
Character,
"Nominal",
Set Values({"aa", "bb", "cc", "aa", "bb", "cc", "aa", "bb", "cc"})
)
);
dt << New Column("col", Numeric, Ordinal, << Set Each Value(
vals = As Constant(Associative Array(:Column 1 << get values) << get keys);
Contains(vals, :Column 1)
));回复:如何根據列中的組創建數字你好,
這是一個醜陋的方法,它將為您的 ID 列表分配一個數字 ID
Col Rank( :Column1, <<TIE></TIE>
問題是這些唯一 ID 不會以 1 為增量創建。
我仍在研究更好的方法,但這可能會開始。
最好的。
TS
回复:如何根據列中的組創建數字你好,我們又見面了,
我明白了(見下文):
aa = Associative Array( :GROUP );
kk = Associative Array( :GROUP ) << Get Keys;
For( i = 1, i <= N Items( kk ), i++,
aa[kk[i]] = i
);
aa[:GROUP];
我希望它適用於您的應用程序。
最好的,
TS
回复:如何根據列中的組創建數字這是完成它的另一種方法。
這種方式創建一個表摘要並為每個唯一值提供一個數字。默認情況下,這是按升序排列的,但也可以按降序排列或您希望的任何其他順序。
當前的編號公式還可以根據需要針對不同的單位或增量變得更加複雜。
所有步驟也可以通過單擊菜單中的按鈕來完成
讓我們知道它是否有效。
// create data table to work with
dt1 = New Table( "Untitled", Add Rows( 11 ),
New Column( "Column 1", Character, "Nominal",
Set Values({"aaa", "bb", "ccc", "aaa", "ddd", "eee", "ccc", "bb", "bb", "ccc", "aaa"})
)
);
// start working
// Data table summary
dt2 = dt1 << Summary( Group( :Column 1 ), Freq( "None" ), Weight( "None" ), Link to original data table( 0 ));
// Delete column: N Rows
dt2 << Delete Columns( :N Rows );
// New column: result
dt2 << New Column( "result", Numeric, "Continuous", Format( "Best", 12 ),Formula( Row() ));
// Delete column formula: result
dt2:result << Delete Formula;
// Update data tables
dt1 << Update(
With( Data Table( dt2 ) ),
Match Columns( :Column 1 = :Column 1 ),
Replace Columns in Main Table( None )
);
// Close Data Table: Untitled By (Column 1)
Close( dt2, no save );