从图表/数据表中提取数据<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />我有一个数据表,绘制了下面的内容。我需要找到最接近 y=0 的点的相应 x 值。我需要交叉(最接近)零的前两个点(红线),第三个交叉点不感兴趣。
我可以使用脚本找到最接近的值:
值=0;
d = Abs((:"col" << 获取值) - 值);
行= Loc(d == Min(d));
显示(行);
数据表( "DT" ) << 选择行(rows);
无论零线何时穿过,都会返回最接近零线的值。

这两个 x 值将作为新列进入 dt 并用于进一步计算。我使用上面的脚本是否走在正确的轨道上?
顺便说一句,我是 JMP 脚本(以及一般编程)的新手。
谢谢!
回复:从图形/数据表中提取数据如果您从您所说的已计算的汇总表中获取数据并执行 Tables==>将该数据加入到原始数据表中,那么您可以在脚本中引用。或者,如果您手动添加数据,那就可以了。因此,如果名为“半值”的列每行都有一个“半值”值,那么您可以将“0”更改为
半值和半值[I+1]
如果((dt:y >= dt:半值& dt:y[I+1]<=dt:半值[I+1]........................
回复:从图形/数据表中提取数据由于我取的是最大值的一半,因此数据表中没有相应的数据值来匹配并获取 x 值。我这样做是为了获得与最大值一致的 x 值,但现在 不是匹配的值,因为它是计算值。我尝试使用半值作为提取相应 x 值的值。与上面的脚本类似,它获取与零交叉的值,我需要获取最接近计算的半值的值。我尝试将半值设置为每个零件 ID 的变量,并逐步遍历每个零件 ID 并获取最接近半值的值:
这与上面获取最接近零的值的脚本类似,只不过它会获取最接近为每个零件 ID 计算的半值的值。
回复:从图形/数据表中提取数据如果我正确地解释了您的要求,我相信获取汇总表并在零件 ID 上进行表==>连接匹配的最简单方法。它会将最大值添加到相应零件 ID 的每一行
回复:从图形/数据表中提取数据我有另一个问题。我从数据集中收集了另一个参数,并创建了一个汇总表来查找该参数的最大值。从那里我取该值的一半并将其记录在新列中(“半值”)。我想在脚本中使用半值来获取每个零件 ID 的相应 x 值:

每个部件 ID 将具有不同的半值。以上是脚本中需要插入半值以获得对应步长值的部分。我无法正确地将半值放入脚本并通过每个部件 ID 及其关联的半值进行索引。 将正确的半值插入到每个部件 ID 的脚本中的最佳方法是什么?
回复:从图形/数据表中提取数据谢谢吉姆!
这很好用。
回复:从图形/数据表中提取数据以下是将零件 ID 合并到混合中的代码的修改
名称默认为此处( 1 ) ;
dt =当前数据表() ;
输出=新表( “输出” ,
新专栏( “零件编号” ,特点 ) ,
新专栏( 《第一分钟》 ) ,
新专栏( 《第二分钟》 )
) ;
当前数据表(dt) ;
为了( 我= 1 ,我<= N 行( ) - 1 ,我++,
// 在循环数据开始时以及部件 ID 时
// 更改时,需要将 FirstMin 和 SecondMin 值设置为
// 缺失值
如果(我== 1 ,
第一分钟= 。 ;
第二分钟= 。 ;,
dt :零件编号!= dt :零件 ID[i - 1 ] ,
第一分钟= 。 ;
第二分钟= 。 ;
) ;
// 如果发现值过零,则处理数据
如果((DT : y >= 0 & DT :义+ 1 ] <= 0 ) | (DT : y <= 0 & DT :义+ 1 ] >= 0 ) ,
如果(腹肌(DT : y ) <腹肌(DT :义+ 1 ]) ,
分钟= DT : y ;
米罗=我;
,
分钟= DT :义+ 1 ] ;
米罗=我+ 1 ;
) ;
// 如果这是第一个路口,则设置firstMin的值
如果(不见了(第一分钟) ,
第一分钟=分钟;
第一排=米罗;,
// 如果这是第二次交叉,则设置 SecondMin 的值
// 同时选择输入数据表中的行
// 最后将第一个和第二个结果输出到输出
// 数据表
// 因为我们只收集前 2 个交叉口的数据
// 并使用 FirstMin 和 SecondMin 值
// 脚本中缺少触发器,第一次和第二次都出现过
// 最小值设置为实际值,所有后续交叉
// 将被忽略,直到检测到零件 ID 更改
不见了(第二分钟) ,
第二分钟=分钟;
第二排=米罗;
// 指向回输入数据表以选择行
当前数据表(dt) ;
已选择(行状态( 第一排 ) ) = 1 ;
已选择(行状态(第二行)) = 1 ;
输出<<添加行( 1 ) ;
输出:零件编号[ N 行(dtout)] = dt :零件 ID[第二行] ;
输出:第一分钟[ N 行(dtout)] =第一分钟;
输出:第二分钟[ N 行(dtout)] =第二分钟;
) ;
) ;
) ;
回复:从图形/数据表中提取数据另一个问题是让这个脚本逐步遍历包含许多部分的表。我的数据表有3列;零件 ID、步骤、值。有许多不同的部分,每个部分都有数百个步骤。我想要为表中每个唯一的部件 ID 获取两个零交叉,如上所述。不确定如何获取唯一部件 ID 并插入上述脚本以获得每个部件 ID 所需的两个值的最佳方法?
回复:从图形/数据表中提取数据谢谢吉姆!
这正是我所需要的,并且按照您在帖子中描述的方式工作。我现在正在努力将收集到的数据合并到进一步的分析脚本中。
再次感谢。
回复:从图形/数据表中提取数据我认为解决这个问题的方法是遍历数据,然后找到数据第一次和第二次过零的时间。当数据越过0时,找到哪个值最接近零,然后记录该值和行。然后重复第二次出现,然后停止阅读。最后选择找到的行。这是一个简单的脚本,它完全按照我上面描述的操作:
名称默认为此处( 1 ) ;
dt =当前数据表() ;
第一分钟= 。 ;
第二分钟= 。 ;
为了( 我= 1 ,我<= N 行( ) - 1 ,我++,
如果(( : y >= 0 & :义+ 1 ] <= 0 ) | ( : y <= 0 & :义+ 1 ] >= 0 ) ,
如果(腹肌( : y ) <腹肌( :义+ 1 ]) ,
分钟= : y ;
米罗=我;
,
分钟= :义+ 1 ] ;
米罗=我+ 1 ;
) ;
如果(不见了(第一分钟) ,
第一分钟=分钟;
第一排=米罗;
,
第二分钟=分钟;
第二排=米罗;
休息() ;
) ;
) ;
已选择(行状态(第一排)) = 1 ;
已选择(行状态(第二)) = 1 ;