チェックボックスの値を指定された列の最後の行に送信するユーザーはチャート上の点を選択します。次に、スクリプトが実行され、そこでユーザーはモーダルチェックボックスで「開始」または「終了」のオプションを選択します。 スクリプトは選択されたデータ行を別のテーブルdt2にコピーします。 この部分はうまくいきます。 チェックボックスで選択した値を、連結ステートメントによって追加されたばかりの同じ行の "position"という列に追加することはできません。
//Modal (non-Modal) Retrieval in OK button
//Initialize
cycleList = {"start", "end"};
rb_c = 0;
New Window( "Select start/end", <<MODAL></MODAL>
Re:チェックボックスの値を指定された列の最後の行に送信するこんにちはイアン、
これはうまくいきます!どうもありがとうございました。 このスクリプトは、開始時間と終了時間のサイクルデータポイントを転写する時間と時間を節約します。
乾杯!
Re:チェックボックスの値を指定された列の最後の行に送信するループを使用すると、JMP 13の依存関係を回避できます。
NamesDefaultToHere(1);
// Sample data
dt = Open("$SAMPLE_DATA/Big Class.jmp");
// UI
win = NewWindow("Select Cycles",
rc = dt << Control Chart(
Sample Size( 1 ),
KSigma( 3 ),
Chart Col( :height, Run Chart( Show Center Line( 0 ) ) )
),
PanelBox("Define Cycle",
LineUpBox(NCol(2),
ButtonBox("Start Cycle", startScript),
ButtonBox("End Cysle", endScript)
)
)
);
// Make a copy of 'dt' with no rows
dt2 = Eval(dt << getScript);
dt2 << deleteRows(1::NRow(dt));
dt2 << setName((dt << getName)||" - Cycles");
// Add extra columns
dt2 << NewColumn("Row", Numeric, Ordinal);
dt2 << NewColumn("Cycle", Character);
// When 'Start Cycle' is pressed - If multiple rows are selected, take the first
startScript =
Expr(
r = dt << getSelectedRows;
dt2 << addRows(1);
for(c=1, c<=NCol(dt), c++, Column(dt2, c)[NRow(dt2)] = Column(dt, c)[r[1]]);
Column(dt2, "Row")[NRow(dt2)] = r[1];
Column(dt2, "Cycle")[NRow(dt2)] = "Start";
);
// When 'End Cycle' is pressed - If multiple rows are selected, take the first
endScript =
Expr(
r = dt << getSelectedRows;
dt2 << addRows(1);
for(c=1, c<=NCol(dt), c++, Column(dt2, c)[NRow(dt2)] = Column(dt, c)[r[1]]);
Column(dt2, "Row")[NRow(dt2)] = r[1];
Column(dt2, "Cycle")[NRow(dt2)] = "End";
);
「ユーザーが複数の行を選択することはありません」に関しては、私が正しく理解していれば、確かに可能である可能性があります。。。
Re:チェックボックスの値を指定された列の最後の行に送信するこんにちはイアン、
JMP 11を使用する。 ユーザーにチャートが表示され、そこから単一のデータポイントを選択し、スクリプトを実行してそのポイントがサイクルの開始点か終了点かを定義します。 データの行全体を別のテーブルに保存し、その行がサイクルの「開始」か「終了」かを定義する新しい列の「位置」を指定する必要があります。 複数行はユーザーによって選択されません。 時間に対する体重減少を示すサンプルの「チャート2」が添付されています。 コードはユーザーが選択した行をコピーして保存しますが、ユーザーの選択(開始または終了)をトラップしてその値をその行の「位置」列に保存することはできません。
乾杯
Re:チェックボックスの値を指定された列の最後の行に送信するコードは私のために走らなかった、それで私はあなたが上に構築することができるかもしれない代替を提供する(テーブルの添え字のためにJMP 13が必要である):
NamesDefaultToHere(1);
// Sample data
dt = Open("$SAMPLE_DATA/Big Class.jmp");
// UI
win = NewWindow("Select Cycles",
rc = dt << Control Chart(
Sample Size( 1 ),
KSigma( 3 ),
Chart Col( :height, Run Chart( Show Center Line( 0 ) ) )
),
PanelBox("Define Cycle",
LineUpBox(NCol(2),
ButtonBox("Start Cycle", startScript),
ButtonBox("End Cysle", endScript)
)
)
);
// Make a copy of 'dt' with no rows
dt2 = Eval(dt << getScript);
dt2 << deleteRows(1::NRow(dt));
dt2 << setName((dt << getName)||" - Cycles");
// Add extra columns
dt2 << NewColumn("Row", Numeric, Ordinal);
dt2 << NewColumn("Cycle", Character);
// When 'Start Cycle' is pressed - If multiple rows are selected, take the first
startScript =
Expr(
r = dt << getSelectedRows;
dt2 << addRows(1);
dt2[NRow(dt2), 1::NCol(dt)] = dt[r[1],0];
dt2[NRow(dt2), "Row"] = r[1];
dt2[NRow(dt2), "Cycle"] = "Start";
);
// When 'End Cycle' is pressed - If multiple rows are selected, take the first
endScript =
Expr(
r = dt << getSelectedRows;
dt2 << addRows(1);
dt2[NRow(dt2), 1::NCol(dt)] = dt[r[1],0];
dt2[NRow(dt2), "Row"] = r[1];
dt2[NRow(dt2), "Cycle"] = "End";
);
おそらくあなたは自分のやり方で設計した正当な理由がありましたが、範囲を定義するよりも開始と終了を定義する方が複雑でエラーが発生しやすいようです。