こんにちは。私は、可変数の一意の列の内容と最終出力を持つデータのテーブル操作 (主に、一致式を使用して新しい列を追加する) を自動化するスクリプトを作成しています。
:SampleID (Init_IDs に保存) 内の一意のコンテンツを識別するスクリプトを作成し、New_IDs に保存するポップアップ ウィンドウでユーザーに名前の変更を促しました。その後、標準の一致式を使用して新しい列を作成できます。
New Column( "Sample",
Character,
Nominal,
Formula(
Match( :SampleID,
"C1", "Constant 1",
"C2", "Constant 2",
Init_IDs[1], New_IDs[1],
Init_IDs[2], New_IDs[2],
Init_IDs[3], New_IDs[3],
Init_IDs[4], New_IDs[4],
Init_IDs[5], New_IDs[5],
Init_IDs[6], New_IDs[6],
)
)
);
この数式は、New_ID のサイズが 6 であるテスト データ セットでは機能しますが、これは変更される可能性があるため、For ループを使用して柔軟にしたいと思います。これは私が試した方法ですが、機能しません。
New Column( "Sample",
Character,
Nominal,
Formula(
Match( :SampleID,
"C1", "Constant 1",
"C2", "Constant 2",
) +
For( i = 1, i <= N Items( New_IDs ), i++,
Match( :SampleID,
Init_IDs[i], New_IDs[i],
)
)
),
);
N 個のアイテム (New_IDs) が値 6 を生成することを確認しました。他の Match 式と組み合わせずに For ループのみを試しましたが、これも機能しませんでした。そのため、最終的には間の「+」が問題になる可能性がありますが、主な問題は for ループ自体にあるようです。
また、Match 式の代わりに If ステートメントを使用して簡略化することも試みましたが、それでもうまくいきませんでした。
New Column( "Sample",
Character,
Nominal,
Formula(
For( i = 1, i <= 6, i++,
If( :SampleID == Init_IDs[i],
New_IDs[i]
)
)
)
);