列内のグループに基づいて数値を作成する方法やあ、
同じ文字列の順序がランダムに繰り返されるカテゴリ列があります。 画像の例のように、同じ文字列を持つ各グループに番号をラベル付けしたいと考えています。 結果の列を作成するにはどうすればよいですか?

自動化とスクリプト作成Re: 列内のグループに基づいて数値を作成する方法「新しい列を再コードする」を使用してみてはいかがでしょうか。

脚本:
// 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;
);Re: 列内のグループに基づいて数値を作成する方法私は毎日新しいデータを収集しているので、たくさんの新しい文字列が得られるでしょう。 新しい列を再コードしてハードコードするよりも良い方法が必要です
Re: 列内のグループに基づいて数値を作成する方法どのような種類の列が必要か、およびどの程度のスクリプトを実行するかに応じて、かなりの数のオプションがあります。 以下は機能する可能性のあるオプションの1つです
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)
));Re: 列内のグループに基づいて数値を作成する方法やあ、
これは、ID のリストに数値 ID を割り当てる醜いアプローチです。
Col Rank( :Column1, <<TIE></TIE>
問題は、これらの一意の ID が 1 ずつ作成されないことです。
私はまだより良い方法に取り組んでいますが、これが始まるかもしれません。
一番。
TS
Re: 列内のグループに基づいて数値を作成する方法また会ったね、
分かりました(以下を参照):
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
Re: 列内のグループに基づいて数値を作成する方法これを行う別の方法があります。
この方法では、テーブルの概要が作成され、それぞれの一意の値に番号が付けられます。デフォルトでは、これは昇順で行われますが、降順またはその他の希望する順序にすることもできます。
現在の番号付けの式は、必要に応じて、さまざまな単位や増分に合わせてより洗練されたものにすることもできます。
すべての手順は、メニューのボタンをクリックしても実行できます
うまくいくかどうかお知らせください。
// 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 );