如何计算上面最后一行不为空的间隔?用图中这样的例子:
谢谢!

dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt[2::8,"height"]="";
dt[10::17,"height"]="";
dt[19::28,"height"]="";
dt[30::39,"height"]="";
New Column("new",Character,"Nominal",Width(5));脚本回复:如何计算上面最后一行不为空的间隔?将列数据移动到矩阵中是一件简单的事情,然后以您希望新列的格式生成新矩阵,然后一旦完成,将矩阵移动到数据表中。 所有矩阵操作都将在内存中完成。回复:如何计算上面最后一行不为空的间隔?谢谢!
回复:如何计算上面最后一行不为空的间隔?我想添加另一列“new2”以使其进入下一个排位赛间隔。

如何同时计算和打印两列(“new”,“new2”)?像VBA数组一样,在内存中um操作,一次输出到表中。
谢谢!
回复:如何计算上面最后一行不为空的间隔?谢谢吉姆!
我使用 VBA 并经常编写循环来完成我自己的项目。
我经常使用超过几百万行的数据。速度是一个关键问题。
我觉得 JMP 更快。
回复:如何计算上面最后一行不为空的间隔?Excel 与包括 JMP 在内的许多语言一样,都有自己独特的编码快捷方式。其中一些在许多语言中得到了更广泛的使用,但大多数只是在它们自己的语言中保留为独特的语法。JMP 中的此类语法项都包含在脚本指南中。
这是另一种计算方法。它在小型数据表上运行良好,但对于大量行会变得昂贵。
names default to here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt[2 :: 8, "height"] = "";
dt[10 :: 17, "height"] = "";
dt[19 :: 28, "height"] = "";
dt[30 :: 39, "height"] = "";
New Column( "new",
formula(
If( Is Missing( :height ) == 0,
curRow = Row();
x = curRow - Max( Current Data Table() << get rows where( Row() < curRow & Is Missing( :height ) == 0 ) );
,
x = .
);
x;
)
)
回复:如何计算上面最后一行不为空的间隔?我提供的公式还不够吗?
回复:如何计算上面最后一行不为空的间隔?我只是在使用这个处理过的“大类。 JMP”数据来说明:
如果某行的高度列不为空,求该行上方高度列数据的最后一行非空行数的区间。
例如dt[18,"height"]不为空,第18行最前面的最后一个非空行是DT[9,"height"]。所以dt[18,"new"]返回:18 - 9 = 9
谢谢!回复:如何计算上面最后一行不为空的间隔?你期望这个公式的结果是什么?
回复:如何计算上面最后一行不为空的间隔?“>0”等参数在 JMP 中不起作用,但在 excel 中有效。
Contains(:[Index(1,Row())],">0",-1)
Contains(:[Index(1,Row())],!is Missing(:),-1)
回复:如何计算上面最后一行不为空的间隔?谢谢吉姆!
我一直用Excel,这些简单的数据处理很容易。
我不想通过Excel处理数据然后使用一个使用JMP的专业模块。相反,使用 JMP 来处理所有这些。
我觉得JMP用这个公式就可以搞定。但是知道怎么写
Contains(:[Index(1,Row())],,-1)
回复:如何计算上面最后一行不为空的间隔?- 我认为您不希望名为“New”的新列成为字符列,也不希望它成为“Nominal”,因此我根据这些假设编写了公式。
- 您似乎在与 JMP 公式的概念作斗争。您的一些讨论条目要求帮助解决一些相当简单的问题。社区可以做些什么来帮助您创建这些公式?
- 这是我的解决方案......其他人可能有不同或更好的方法
names default to here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt[2 :: 8, "height"] = "";
dt[10 :: 17, "height"] = "";
dt[19 :: 28, "height"] = "";
dt[30 :: 39, "height"] = "";
New Column( "new",
formula(
If( Row() == 1, last = 0 );
If( Is Missing( :height ) == 0,
If( last == 0,
x = .;
last = Row();
,
x = Row() - last
);
last = Row();
,
x = .
);
x;
)
);