こんにちは!
現在、JMP/JSL を使用するプロジェクトに取り組んでおり、データでは、条件に基づいて複数のセルの値を削除またはクリアする必要があります。 以下の生データのサンプルと必要な出力を参照してください。
生データ:
| テスト1 | P/F1 | テスト2 | P/F2 | テスト3 | P/F3 | テスト4 | P/F4 | テスト5 | P/F5 |
| 1 | P | 2 | P | 4 | P | 9 | F | 3 | P |
| 5 | P | 8 | F | 4 | P | 6 | F | 2 | P |
| 7 | P | 1 | P | 6 | F | 5 | F | 6 | F |
| 4 | P | 1 | P | 9 | F | 9 | F | 9 | F |
| 6 | F | 4 | P | 10 | F | 10 | F | 8 | F |
必要な出力:
| テスト1 | P/F1 | テスト2 | P/F2 | テスト3 | P/F3 | テスト4 | P/F4 | テスト5 | P/F5 |
| 1 | P | 2 | P | 4 | P | 9 | F | * | * |
| 5 | P | 8 | F | * | * | * | * | * | * |
| 7 | P | 1 | P | 6 | F | * | * | * | * |
| 4 | P | 1 | P | 9 | F | * | * | * | * |
| 6 | F | * | * | * | * | * | * | * | * |
ここで必要なのは、1 番目の F (失敗) がトリガーされたら、後続のセルをすべてクリアすることです。
私は大規模なデータを扱っていますが、これはスクリプトを介してのみ実行できると考えています。
ループ関数を試しましたが、今のところ機能するものはありません。 これがJSLでも可能かどうかは本当にわかりません。
よろしくお願いいたします。
これで本当に問題が解決しました! 称賛の声!
また、数千のセルに対して 1 秒もかからずに実行されたことにも驚きました。
ありがとう!!
これがうまくいくかどうかを確認してください。
Names default to here(1);
dt = New Table( "Example",
Add Rows( 5 ),
New Column( "Test1",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Selected,
Set Values( [1, 5, 7, 4, 6] )
),
New Column( "P/F 1",
Character( 16 ),
"Nominal",
Set Values( {"P", "P", "P", "P", "F"} )
),
New Column( "Test2",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [2, 8, 1, 1, 4] )
),
New Column( "P/F 2",
Character( 16 ),
"Nominal",
Set Values( {"P", "F", "P", "P", "P"} )
),
New Column( "Test3",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [4, 4, 6, 9, 10] )
),
New Column( "P/F 3",
Character( 16 ),
"Nominal",
Set Values( {"P", "P", "F", "F", "F"} )
),
New Column( "Test4",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [9, 6, 5, 9, 10] )
),
New Column( "P/F 4",
Character( 16 ),
"Nominal",
Set Values( {"F", "F", "F", "F", "F"} )
),
New Column( "Test5",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [3, 2, 6, 9, 8] )
),
New Column( "P/F 5",
Character( 16 ),
"Nominal",
Set Values( {"P", "P", "F", "F", "F"} )
)
);
bad_rows = [];
for(i=1, i<=ncols(dt), i++,
col = Column(dt, i);
if(col << Get Data Type == "Character", //this is an assumption that your P/F cols are the only char
if(nrows(bad_rows), //check if there's anything to clear
col[bad_rows] = ""; // clear character
);
bad_rows |/= loc(col <<GET values=""></GET>