根据列规格限制更改列值我们有一个相位测试,有时喜欢将值翻转360度。 我想要一个脚本,它可以浏览表中的列数据,取平均值,然后将其与LSL / USL进行比较。 如果平均值的符号与规格限制相反,则将该值添加360。
由于测试仪处理数据的方式,我无法进行全面的If(:test <0,t1 =:column + 360; t1;)。
我已经附上了一个示例表,最后两列是我的问题所在。
提前致谢
数据表脚本编写回复:根据列规格限制更改列值看看这个小脚本是否能满足您的需求
Names Default To Here( 1 );
dt = Current Data Table();
colList = dt << get column names( continuous, string );
For( i = 1, i <= N Items( colList ), i++,
specs = Column( dt, colList[i] ) << get property( "spec limits" );
If( Is Missing( specs["LSL"] ) == 0 & Is Missing( specs["USL"] ) == 0,
If( !(specs["LSL"] <= Col Mean( Column( dt, colList[i] ) ) <= specs["USL"]),
For Each Row( As Column( dt, colList[i] ) = -1 * As Column( dt, colList[i] ) )
)
);
);
回复:根据列规格限制更改列值谢谢纳尔逊先生。
我不得不稍微修改一下脚本。 我将乘法更改为加法,并将“均值”更改为“中位数”。 当我发表原始帖子时,我并没有考虑到灾难性的失败。 第40列和第41列的列均值不在LSL和USL之间。
Names Default To Here( 1 );
dt = Current Data Table();
colList = dt << get column names( continuous, string );
For( i = 1, i <= N Items( colList ), i++,
specs = Column( dt, colList[i] ) << get property( "spec limits" );
If( Is Missing( specs["LSL"] ) == 0 & Is Missing( specs["USL"] ) == 0,
If( !(specs["LSL"] <= Col Median( Column( dt, colList[i] ) ) <= specs["USL"]),
For Each Row( As Column( dt, colList[i] ) = 360 + As Column( dt, colList[i] ) )
)
);
);