将复选框的值发送到指定列的最后一行用户在图表上选择一个点。 然后在用户选择模式复选框“开始”或“结束”中的选项时运行脚本。该脚本将选定的数据行复制到另一个表 dt2。这部分工作正常。我似乎无法将复选框中选择的值附加到名为“位置”的列中,用于连接语句刚刚添加的同一行。
//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";
);
也许您有充分的理由按照您的方式设计它,但似乎定义开始和结束使其比定义范围(即整个周期)更复杂且更容易出错。