將復選框的值發送到指定列的最後一行用戶選擇圖表上的點。然後運行腳本,用戶在模式複選框中選擇“開始”或“結束”選項。 該腳本將選定的數據行複製到另一個表dt2。 這部分工作正常。 我似乎無法將復選框中選中的值附加到剛剛由concatenate語句添加的同一行的名為“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。 向用戶顯示他們從中選擇單個數據點的圖表,運行腳本以定義該點是循環的開始還是結束。 我需要將整行數據保存到另一個表中,新列“position”定義該行是否為循環的“開始”或“結束”。 用戶不會選擇多行。 附件是一個樣本“圖表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";
);
也許你有充分的理由按照你的方式設計它,但似乎定義一個開始和一個結果使它比定義一個範圍(即整個週期)更複雜和容易出錯。