如何在 for 循环中使用 Select Columns 将数据值添加到表中,在哪里制作目标数据的新整体数据表For( date = date_array << First, !Is Empty( date ), date = date_array << Next( date ), //looping through date_array's keys is clunky but done this way in JMP
dt << Select Columns( :Timepoint, :Target Channel, :Run date ), Where(:Timepoint == date);
dt << Subset( ( Selected Rows ), Output Table Name( "Subset" ));<BR />);
我希望通过for循环的每次迭代逐步添加由列标准(:Timepoint == LBCM)指定的数据,并在循环完成后将其组合到最后的组合数据表中,并显示结果.
到目前为止,它没有在任何地方添加任何东西。我最终根本没有新的数据表。
我也将所有这些都放在另一个 for 循环中,基于示例 ID,但我认为在这里添加现在只会使事情过于复杂。
我在 JMP 社区论坛中找到的所有其他示例都非常复杂,或者看起来如此,构建数据数组并将它们传输到数据表或类似的东西。 我希望这里的解决方案尽可能简单。 当然,当回复进来时,我会为对话做出贡献,但到目前为止,我完全被卡住了。
谢谢您的帮助,
麦克风
分析数据表其他脚本一个回复:如何在 for 循环中使用 Select Columns 将数据值添加到表中,在哪里制作目标数据的新整体数据表选择 Columns 部分可能是一个非常小的效率提升,但大多数情况下它只是使代码更易于阅读(在我看来)。
您是否尝试过在循环中添加调试打印以查看是否有任何子集:
For(i = 1, i <= N Items(IDs), i++,
ID = IDs[i];
date_array = Associative Array({"date1", "date2", "date"}, {{}, {}, {}});
For(date = date_array << First, !Is Empty(date), date = date_array << Next(date),
dt << Select Where(:Timepoint == date);
Show(N Items(dt << Get Selected Rows));
dt_ld4 << Subset(Columns({"Timepoint", "Target Channel"}), Selected Rows, Output table name("Subset"));
);
);我添加了Show(N Items(dt << Get Selected Rows));它应该告诉您是否选择了任何行。 此外,如果您有类似命名的列,我也不会觉得使用 ID 作为变量名(它可能有效,不确定,但我确实避免使用这样的名称只是为了确定)。 我会用 currentID 或其他东西替换它。
我认为在这一点上,如果我们有一个主题可以尝试帮助您逐步解决此问题,可能会更容易。对我们有很大帮助的一件事是拥有一个示例数据集。 数据集不必很大,可以是匿名的或完全伪造的数据,但它仍然应该是真实的(列数据类型相同,可以测试不同的案例)。
回复:如何在 for 循环中使用 Select Columns 将数据值添加到表中,在哪里制作目标数据的新整体数据表谢谢你,Jarmo。 那么您的代码主要是效率提升还是真正的功能提升?
它对我来说并不完全有效,但我不得不说我将所有这些都放在另一个 for 循环(或两个)中:
For( i = 1, i <= N Items( IDs ), i++,
ID = IDs[i];
date_array = Associative Array( {"date1", "date2", "date"}, {{}, {}, {}} );
For( date = date_array << First, !Is Empty( date ), date = date_array << Next( date ), //looping through date_array's keys is clunky but done this way in JMP
dt << Select Where(:Timepoint == date);
dt_ld4 << Subset(Columns({"Timepoint", "Target Channel"}), Selected Rows, Output table name("Subset"));
//...
););计算机似乎在执行时想了很多,但屏幕上什么也没显示。 我必须注意,所有这些代码都是匿名的,因此可能会出现拼写错误和转录错误,也可能会与早期版本的编写内容混淆。 我想可以肯定地假设可以做出近似的相似性......
我不知道这两行应该在循环内部还是其中之一之外,或者此时我是否需要两个循环。 我需要再仔细看看这个脚本。
我还在单独的帖子中讨论了关于这段代码的几个单独的主题。 资深人士能否告诉我这是否可以接受,或者是否最好将代码块优先放在一篇文章中并在一篇文章中讨论单独的主题,或者任何一种方式都可以吗?
穆乔斯·格拉西亚斯,
迈克尔
回复:如何在 for 循环中使用 Select Columns 将数据值添加到表中,在哪里制作目标数据的新整体数据表我不是 100% 确定你想在这里做什么,所以我猜一点
这两行似乎可能存在一些问题:
dt << Select Columns( :Timepoint, :Target Channel, :Run date ), Where(:Timepoint == date);
dt << Subset( ( Selected Rows ), Output Table Name( "Subset" )););
您可以在子集命令中组合所需的列,并且可以使用 << Select Where 来选择行(似乎您缺少 Select)。
dt << Select Where(:Timepoint == date);
dt << Subset(Columns({"Timepoint", "TargetChannel"}), Selected Rows, Output table name("Subset"));此外,如果您希望先选择要子集化的列,则必须在 Subset 命令中添加 Selected Columns
dt << Subset(Output table name("Subset"), Selected Rows, Selected Columns);回复:如何在 for 循环中使用 Select Columns 将数据值添加到表中,在哪里制作目标数据的新整体数据表看一眼
dt << add rows(n);
根据需要添加新行