新しい要件を満たすために以前のスクリプトを作り直しました。
Names Default To Here( 1 );
dt = Current Data Table();
keep = {};
delete = {};
colNameList = dt << get column names( string );
numericNamesOnly = colNameList;
For( i = N Items( colNameList ), i >= 1, i--,
colNameList[i] = Uppercase( colNameList[i] );
If( Is Missing( Num( colNameList[i] ) ) == 1,
numericNamesOnly[i] = ""
);
);
While( N Items( colNameList ) > 0,
If(
Contains( colNameList[1], Uppercase( "Date début" ) ),
found = Contains( numericNamesOnly, Word( 3, colNameList[1] ) );
If( found > 0,
Insert Into( keep, colNameList[1] );
Insert Into( keep, numericNamesOnly[found] );
Remove From( numericNamesOnly, found, 1 );
Remove From( numericNamesOnly, 1, 1 );
Remove From( colNameList, found, 1 );
Remove From( colNameList, 1, 1 );
,
Insert Into( delete, colNameList[1] );
Remove From( colNameList, 1, 1 );
Remove From( numericNamesOnly, 1, 1 );
);,
Is Missing( Num( colNameList[1] ) ) == 0,
found = Contains( colNameList, Uppercase( "DATE début " ) || colNameList[1] );
If( found > 0,
Insert Into( keep, colNameList[1] );
Insert Into( keep, dateDebutOnly[found] );
Remove From( numericNamesOnly, found, 1 );
Remove From( numericNamesOnly, 1, 1 );
Remove From( colNameList, found, 1 );
Remove From( colNameList, 1, 1 );
,
Insert Into( delete, colNameList[1] );
Remove From( colNameList, 1, 1 );
Remove From( numericNamesOnly, 1, 1 );
);,
Remove From( colNameList, 1, 1 );
Remove From( numericNamesOnly, 1, 1 );
)
);
dt << delete columns(delete);
これはあまりきれいなコードではありませんが、仕事を完了するための直接的な方法を示しています。
注: サンプル データ テーブルにエラーがあります。列名「Datd début 952」を「Date début 952」に変更する必要があります。
ありがとう、うまくいきました!
スクリプトを使用しようとしましたが、類似した用語がないため、最初は 2 番目のグループのすべての列を特徴付ける方法がわかりませんでした。
みなさん、こんにちは。次のようなデータテーブルがあります。
データベースは 2 つのグループで構成されます。
- 日付 (「開始日...」")
- 操作に関連付けられた番号
私の目標は、2 つの列グループの交差部分にない列を削除することです。
つまりここでは、「開始日 952」、「9950」の列をスクリプトで自動的に削除したいと考えています。
ご協力いただきありがとうございます !