「Split On」詳細オプション「Split Delimiter」= (Text)を使用して列を(JSLによって)再コードしたいと考えています...
そうです。Recode は JSL 関数ではなく列アクションです。 インタラクティブなレコーディング エディターを開くデータ列メッセージ << Recode がありますが、レコーディング ルールを自動的に適用するものはありません。 一方、文字列関数のコレクションは豊富であり、多くの助けを提供します。
元の値と望ましい再コード化結果の例を提供していただけますか? さらにサポートが必要な場合は、これにより、より適切な提案を行うことができる場合があります。
ありがとうマーク
よく理解すると、JSLにはrecode機能は存在しないのですが…。
そのため、列を再コード化するときに提案される赤い三角形のオプション (分割、詳細など) を使用して手動で行うことをスクリプト化することはできません。
基本的な文字機能を使用します...
JSL のすべての文字関数を考慮して独自の式を作成し、それを新しい列 (再コード化された値) として保存するか、スクリプトを使用せずに式を使用して行ごとに値を計算する必要があると思います。
これまでのあなたの説明はあまりにも曖昧すぎて、これ以上具体的な提案をすることは誰にもできません。
そうです、それが機能することがわかります。 次に、その式をコピーして、このスクリプトの「recode 式」に貼り付けて、同じことを実行します。
Current Data Table() << New Column( "Recoded",
Formula( recode expression )
);
ありがとうございます。ただし、この再コーディングはグローバル スクリプト内で実装され、再コーディングされる列に応じてテキスト区切り文字がユーザーによって変更される可能性があるため、一致スクリプトは避けたいと思います。
だからこそ、可能であれば、オプションを使用して再コーディング関数を作成することを好むのです...
私の提案は次のようなものです@Mark_Bailey 。ただし、列の数式を保存する代わりに、手動で再コードを作成できますが、実際に再コードを完了する前に、赤い三角形に移動して、
スクリプト==>スクリプトウィンドウに保存
そしてスクリプトが表示されます指定したレコードを生成する必要はありません
Current Data Table() << Begin Data Update;
dc1 = New Column( :weight );
dc1 << Set Name( "weight 2 2" );
Current Data Table() << Go to( dc1 );
Current Data Table() << Move Selected Columns( after( :weight ) );
For Each Row(
dc1[] = Match( :weight,
64, 60,
67, 60,
74, 70,
79, 70,
81, 80,
84, 80,
85, 80,
91, 90,
92, 90,
93, 90,
95, 90,
98, 90,
99, 90,
104, 100,
105, 100,
106, 100,
107, 100,
111, 110,
112, 110,
113, 110,
115, 110,
116, 110,
119, 110,
123, 120,
128, 120,
134, 130,
142, 140,
145, 140,
172, 170,
:weight
)
);
Current Data Table() << End Data Update;
ハイマーク
はい、ただし結果は一致式です
可能であれば、再コード オプションを使用して再コードをスクリプト化したいと考えています。
何かのようなもの
dt_:var_name << recode(分割区切り文字テキスト("文字列"))....
それが可能かどうかはわかりません。
タスクを手動で実行して、期待どおりの結果が得られたことを確認しましたか? そうである場合、結果を数式を含む新しいデータ列に保存しましたか? その場合は、式を調べて、スクリプトでどのように実行できるかを確認してください。