こんにちは、
値 1、2、3 ~ N を持つ列を作成して、別の列の一意の値にラベルを付けたいと考えています。
コミュニティには同様の投稿がいくつかあります
列 A の一意のグループ化に基づいて数値を持つ新しい列を作成する方法
ユニークなランク
さまざまなソリューションを備えています。
しかし、私はこれまでのところ、唯一の素晴らしい解決策を見つけることができませんでした。
そのはず
- 動的 (テーブルの変更に反応) -> テーブル/サマリーなし、コードへのラベルなし
- 列のタイプに依存しない (少なくとも: 文字 + 数値) -> コードにラベルを付けない
- ソートされていないテーブルでも機能 -> 遅延なし
- 高速 -> 連想配列なし
最適: (*) のような短い関数
rank unique(:col1)
または関数のオプション (**)
rank(:col1, << unique(1))
オプションを見つけました
rank(:col1, << tie(mode))
しかし、私は見つかりませんでしたモードこれにより、数値 1、2、3 ...が生成されます。 N
を使用すればそこに到達できると思いましたランク2回:
New Column( "step1",Formula( Col Rank( :sex, <<TIE></TIE>
しかし、ステップ 2 は、ステップ 1 列に関する、ユーザーには見えないいくつかの秘密を知っています。

機能するもの:
New Column( "Rank[sex]",
Formula(
If(row() == 1,summarize(values= by(:sex)));
Contains( values, :sex )
)
);
(*) または (**) をまだ検索中ですが、[新しい数式] 列を右クリックしてコンテキスト メニューで見つけられることを願っています。 しかしここで?