複数のデータテーブル用のスクリプト/ワークフローやあみんな、
私は JMP 、特に JSL でのスクリプト作成については比較的初心者です。現在開いているすべてのデータテーブル(複数のファイルのインポートを介してインポート)に既存のスクリプトを適用する方法を探しています。このトピックに関する豊富なコミュニティ スレッドを調べましたが、有効な解決策をまとめることができませんでした。
さて、次のような動作する JSL コードがあります (注: 必要に応じてワークフローに埋め込まれています)。
// Specify the dataset and the suffix to search for in column headers
dt = Current Data Table();
// Define suffix of interest for replacement
targetSuffix = "TimeAbs";
// Get list of column names from the current data table
colNames = dt << Get Column Names( "string" );
// Loop through all column names and check if the target suffix is present
For( i = 1, i <= N Items( colNames ), i++,
If( Contains( colNames[i], targetSuffix ),
// If the target suffix is found, change the column header to "Date"
Column( dt, colNames[i] ) << Set Name( "Date" )
)
);ワークフローの現在の機能は、現在開いているデータ テーブルの列名を置換することですが、この名前はファイルごとに異なる可能性があるため、固定のサフィックスのみを検索することにしました。
このスクリプトを拡張して、現在開いている複数のデータ テーブルに適用したいと思います。 For または For Each ループやテーブル スクリプトに基づく同様のタスクのソリューションを見てきましたが、前述したように、私は JSL にまったく慣れておらず、今のところ成功していません。
さらに、ファイル名と列名は大幅に異なる可能性があるため、これは非常に汎用的なものである必要があります。
最終的な目標はこれらのテーブルを連結することですが、単一の質問の範囲外になる可能性があります。
アドバイスやアイデアをありがとうございました
高度な統計モデリング自動化とスクリプト作成基本的なデータ分析とモデリングデータアクセス結果の共有と伝達Re: 複数のデータ テーブル/ワークフローのスクリプトGet Data Table List()でテーブルのリストを取得し、それをループすることができます。
Names Default To Here(1);
targetSuffix = "TimeAbs";
For Each({dt_cur}, Get Data Table List(),
colNames = dt_cur << Get Column Names("String");
For Each({colname}, colnames,
If(Contains(colname, targetSuffix),
Column(dt_cur, colname) << Set Name("Date")
)
);
);
ループの内部を関数や式に変換することもできます
Names Default To Here(1);
change_table_name = function({dt, targetsuffix = "TimeAbs", newname = "Date"}, {Default Local},
colnames = dt << Get Column Names("String");
For Each({colname}, colnames,
If(Contains(colname, targetsuffix),
Column(dt, colname) << Set Name(newname)
)
);
);
For Each({dt_cur}, Get Data Table List(),
change_table_name(dt_cur);
);