行選択を展開簡単に識別できる行の周囲の特定の行グループを選択したいのですが、下の例では対象の行をキャプチャできています。対象のデータブロックを取得するには、その行を11行上、15行下まで拡張する必要があります。
Current Data Table() << Select where( Contains( As Column(2), "1st Thickness" );
自動化とスクリプトRe: 行選択の拡張こんにちは、使えます
dt = current data table();
block of interest = (dt << get selected rows()) + -11::15;
dt << Select Rows( block of interest )
Re: 行選択の拡張Select Where ではなく Get Rows Where を使用してください
1番目の厚さの値を持つ行の行番号を返します。
次にSelect Rows()を使用して、上の11行と下の15行を選択します。
Re: 行選択の拡張ホギ
面白そうですが、「'Index' のアクセスまたは評価におけるインデックス引数、..................................」というエラーが発生します。
ありがとう
Re: 行選択の拡張@hogi のアプローチは正しいです。構文は間違っています。
これが私のアプローチです
dt = current data table();
block of interest = (dt << get selected rows())[1];
block of interest = index(block of interest-11,block of interest+15);
dt << Select Rows( block of interest );
単に切り取ってスクリプトに貼り付けたコードを取得することを期待するのではなく、提供されたコードを調べ、そこから得られる新しい洞察を考慮して、それを自分のコードに組み込むように、パラダイムを少し変更することをお勧めします。
Re: 行選択の拡張その他の提案
Names Default To Here(1);
dt = Current Data Table();
Try(
r = (dt << get selected rows())[1];
dt << Select Where(r - 11 <= Row() <= r + 15);
);
Names Default To Here(1);
below = 11;
above = 15;
dt = Current Data Table();
r = dt << Get Selected Rows();
If(N Items(r) != 1,
Throw("Incorrect amount of rows selected");
);
rows_of_interest = Max(1, r - below)::Min(N Rows(dt), r + above);
dt << Select Rows(rows_of_interest);
Write();
Re: 行選択の拡張ジム
これは動作しますが、行列で最初に選択された行の追加行しか選択されません。すべての行を取得するには、最初に選択された行番号ごとに反復処理を設定する必要があるでしょうか?
Re: 行選択の拡張ジム
反復処理を追加して、目的を達成できたようです。
ありがとう
dt = current data table();
Current Data Table() << Select where( Contains( As Column(2), "1st Thickness" ));
sel_rows = Current Data Table() << Get Rows where( Contains( As Column(2), "1st Thickness" ));
j=1;
For( i = 1, i <= N Items( sel_rows ), i++,
block_of_interest = (dt << get selected rows())[j];
block_of_interest = index(block_of_interest-11,block_of_interest+15);
dt << Select Rows( block_of_interest );
j=j+27;
);
Re: 行選択の拡張最初のメッセージから判断すると、単一行のみに基づいて選択したいというように思われます。ループ処理は間違いなく最も簡単な選択肢であり、データによっては最適化なしでも十分に高速化できる可能性があります。
Names Default To Here(1);
dt = Current Data Table();
selrows = dt << get selected rows();
For Each({r}, selrows,
dt << Select Where(r - 11 <= Row() <= r + 15, current selection("extend"));
);
wait(0);
もう少し複雑なオプション
Names Default To Here(1);
dt = Current Data Table();
selrows = dt << get selected rows();
rows_of_interest = {[]};
For Each({r}, selrows,
rs = Max(1, r - 11)::Min(N Rows(dt), r + 15);
Insert Into(rows_of_interest, rs`);
);
Substitute Into(rows_of_interest, Expr(List), Expr(V Concat));
dt << select rows(rows_of_interest);
wait(0);