こんにちは、私は、可変数の一意の列の内容と最終出力を持つデータのテーブル操作(主に一致式を使用して新しい列を追加する)を自動化するスクリプトを作成しています。
: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]
)
)
)
);