幫忙解析模糊的.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 [ 一世 ]) ) ;
) ;