帮忙解析模糊的.dat文件?转换单位,添加标签?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />所以前任工程师离开了,我正在查看他写的一些脚本,以帮助我们使用.dat文件。 他有一个解析和格式化数据到数据表,但我认为它需要更多的工作,以提高用户友好性。
.dat文件是一个标签描述的数据集,具有大量的测量值。 我的意思是.dat中每个测量的数量和标签随产品而变化。 像一组文件可能有S1到S5,其他可能是S11到S26等。 基本上,标签和标签数量随每个数据集而变化。 看起来像以前的脚本占了这一切。
如何在最后调整它然后转换单位并在列标签中添加“标签(mm)”?电流测量值均为密耳(1/1000英寸)。
建议?我是.jsl的新手并试图弄清楚这一切。
如果有帮助,我附上一些白色水洗副本。

Re:帮助w /解析模糊的.dat文件?转换单位,添加标签?首先,一个人不应该重复代码。 如果您要多次执行某些操作,这是创建函数的良好信号。 我还包括一个Ian代码的snippit来帮助你解决Max的问题。
在发布之前我没有调试过这个,但这对你来说应该很好用。
//创建列转换函数
convertColumns = 功能 ({ PEMdata_all ,信件 ,单元 ,转变 } ,
//找到“X”列
S_columns = {} ;
v = {} ;
对于 ( 一世 = 1 ,一世 <= NCOLS ( PEMdata_all ) ,一世 ++,
colname的 = 柱 ( PEMdata_all ,一世 ) << 得到名字 ;
如果 ( !不见了 ( 正则表达式 ( colname的 ,信件 || “*” )) ,
插入 ( S_columns , colname的 ) ;
v = v || colname的 << 获得价值观 ;
) ) ;
//添加VMax列
VMAX = 颠倒 ( VMAX ( 颠倒 ( v ))) ;
PEMdata_all << 新栏目 ( 信件 || “最大” ,数字 ,连续 ,值 ( VMAX )) ;
插入 ( S_columns ,信件 || “最大” ) ; //添加最大列,以便它也可以转换
//使用转换创建新列
对于 ( 一世 = 1 ,一世 <= NITEMS ( S_columns ) ,一世 ++,
NEWCOL = PEMdata_all << 新栏目 ( S_columns [ 一世 ] || “(” || 单元 || “)” ,数字 ,连续 ,
式 ( 柱 ( PEMdata_all , S_columns [ 一世 ])[] * 转变 )) ;
//(可选)删除以前的mils列
NEWCOL << 删除公式 ;
PEMdata_all << 删除列 ( 柱 ( PEMdata_all , S_columns [ 一世 ]) ) ;
) ;
) ;
//运行感兴趣的列
快报 = { “S” , “CY” } ;
单元 = “英寸” ;
转变 = 1000 ;
对于 ( 一世 = 1 ,一世 <= NITEMS ( 快报 ) ,一世 ++,
convertColumns ( PEMdata_all ,快报 [ 一世 ] ,单元 ,转变 ) ;
) ;
Re:帮助w /解析模糊的.dat文件?转换单位,添加标签?这是一个给你一些想法的例子:
NamesDefaultToHere ( 1 ) ;
//创建一个包含10列的表格
v = Ĵ ( 100 , 10 , RandomNormal ()) ;
DT = 非稳态 ( v ) ;
//在dt中创建一个新列,其中包含第4列,第5列和第6列的最大值
v = : COL4 << 的GetValues ;
v = v || ( : COL5 << 的GetValues ) ;
v = v || ( : COL6 << 的GetValues ) ;
VMAX = 颠倒 ( VMAX ( 颠倒 ( v ))) ;
DT << NewColumn ( “最多3个,4个和5个” ,数字 ,连续 ,值 ( VMAX )) ;
Re:帮助w /解析模糊的.dat文件?转换单位,添加标签?谢谢msharp,
是的,所有的S都在一起,CY,T,CFW等。 我最后重复了每种类型的结构。 也许不是最优雅的,但它的确有效。
有关如何添加更多列来计算每组最大值的任何提示?就像每行最大CY的新列一样?
从那里,我可以尝试对其进行编程以弹出一个新的摘要窗口,显示第1列(CY,T,S,CFW)中的测量值,然后是计数,平均值,USL和CPK。
有小费吗?
Re:帮助w /解析模糊的.dat文件?转换单位,添加标签?在上面的红色文本中,您提到过您只想要S列。 猜猜这是我的误解。
选项:假设您要进行相同的转换,您只需在前四个标签列之后运行所有列。
conv_columns = {} ;
对于 ( 一世 = 五 ,一世 <= NCOLS ( PEMdata_all ) ,一世 ++,
colname = column(PEMdata_all,i)<<获取名称;
插入 (转化 _列 , colname的 )
) ;
或者你可以改变正则表达式:
“CY。*”看起来它可以起作用,假设所有感兴趣的C列实际上都以CY开头。
“\ w + \ d \ d”将匹配至少一个或多个单词字符,后跟至少两个数字字符。 例如,这将匹配'CY22'和'S12',但不匹配'Carrier'
我不打算详细介绍,但有很多方法可以解析字符串。正则表达式是一个可以并且已经填充了许多书籍的主题。 据说可以快速学习基础知识并花一个小时观看YouTube视频或阅读JSL脚本指南的Regex部分,如果你计划进行任何编码,那将是值得的。 正则表达式用于许多编程语言中,因此知识可以转移。
Re:帮助w /解析模糊的.dat文件?转换单位,添加标签?真棒!这正是我正在寻找的。 我添加了一个重复的部分来转换“C”列。 干杯!!
然而,剩下的唯一问题是它拿起其他一个“名字”列(Carrier#)。 脚本行是什么来搜索“C. *”但排除“Carrier#”?
Re:帮助w /解析模糊的.dat文件?转换单位,添加标签?虽然你的前同事的代码看起来不错,但评论很差。 我没有浪费时间去弄清楚,而是在最后添加了你想要的功能。 只需将下面的代码粘贴到最后即可。
无论如何,这是一种更好的编程方法,因为将函数式编程分开是最好的。 一个要解析的代码,一个要转换的代码,等等。 保持代码清洁,更容易调试,重构,读取等。
此代码(1)查找以“S”开头的所有列
(2)添加一个新列,将前一个列转换为英寸并附加“(英寸)”标签(可轻松更改为转换为(mm))。
(3)删除mils列。 如果要保留它们,可以删除最后两行代码。
//添加了部分
//找到S列
S_columns = {} ;
对于 ( 一世 = 1 ,一世 <= NCOLS ( PEMdata_all ) ,一世 ++,
colname的 = 柱 ( PEMdata_all ,一世 ) << 得到名字 ;
如果 ( !不见了 ( 正则表达式 ( colname的 , “S. *” )) ,
插入 ( S_columns , colname的 )
)
) ;
//使用转换创建新列
对于 ( 一世 = 1 ,一世 <= NITEMS ( S_columns ) ,一世 ++,
NEWCOL = PEMdata_all << 新栏目 ( S_columns [ 一世 ] || “(英寸)” ,数字 ,连续 ,
式 ( 柱 ( PEMdata_all , S_columns [ 一世 ])[] * 1000 ));
//(可选)删除以前的mils列
NEWCOL << 删除公式 ;
PEMdata_all << 删除列 ( 柱 ( PEMdata_all , S_columns [ 一世 ]) ) ;
) ;