あいまいな.datファイルの解析に役立ちますか?単位の変換、ラベルの追加<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />それで、前のエンジニアは去りました、そして私は彼が.datファイルで私たちを助けるために書いた彼のスクリプトのいくつかを通して見ています。 彼はデータを解析してデータテーブルにフォーマットするものを持っていますが、もっとユーザーフレンドリーにするにはもう少し作業が必要だと思います。
.datファイルは、あいまいな量の測定値を含むタブ区切りのデータセットです。 .datの各測定値の量とラベルは製品ごとに変わることを意味します。 1つのファイルセットにS1からS5があり、他のファイルセットにはS11からS26などがあります。 基本的に、ラベルとラベル数はデータセットごとに変わります。 前のスクリプトがこれをすべて説明しているようです。
最後にそれを調整して単位を変換し、列ラベルに "label(mm)"を追加するにはどうすればよいですか。現在の測定値はすべてミル(1/1000インチ)です。
助言する?私は.jslに不慣れで、これをすべて理解しようとしています。
それが助けになるならば、私はいくつかの白い洗浄されたコピーを添付しました。

再:あいまいな.datファイルを解析するのに役立ちますか?単位の変換、ラベルの追加まず、コードを繰り返さないようにします。 何度か何かをするつもりなら、これは関数を作成するための良いシグナルです。 私はまた、Maxのことを手助けするために、Ianのコードの抜粋も含めました。
私は投稿する前にこれをデバッグしませんでしたが、これはあなたにとってはうまくいくはずです。
//列変換関数を作成する
convertColumns = 関数 ({ PEMdata_all 、文字 、単位 、変換 } 、
// "X"列を探す
S列 = {} ;
v = {} ;
にとって ( 私 = 1 、私 <= ncols ( PEMdata_all ) 、私 ++、
列名 = カラム ( PEMdata_all 、私 ) << 名前を取得 ;
もし ( !不足している ( 正規表現 ( 列名 、文字 || "。*" )) 、
挿入する ( S列 、列名 ) ;
v = v || 列名 << 値を取得 ;
) ) ;
// VMax列を追加
vMax = 転置 ( VMax ( 転置 ( v ))) ;
PEMdata_all << 新しいコラム ( 文字 || 「マックス」 、数値 、連続的 、値 ( vMax )) ;
に挿入 ( S列 、文字 || 「マックス」 ) ; // max列を追加して変換もする
//変換して新しい列を作成する
にとって ( 私 = 1 、私 <= ナイテム ( S列 ) 、私 ++、
ニューコル = PEMdata_all << 新しいコラム ( S列 [ 私 ] || 「(」 || 単位 || 「)」 、数値 、連続的 、
式 ( カラム ( PEMdata_all 、 S列 [ 私 ])[] * 変換 )) ;
//オプションで前のmils列を削除
ニューコル << 式を削除 ;
PEMdata_all << 列を削除 ( カラム ( PEMdata_all 、 S列 [ 私 ]) ) ;
) ;
) ;
//興味のある列を通り抜ける
手紙 = { "S" 、 "CY" } ;
単位 = "インチ" ;
変換 = 1000年 ;
にとって ( 私 = 1 、私 <= ナイテム ( 手紙 ) 、私 ++、
convertColumns ( PEMdata_all 、手紙 [ 私 ] 、単位 、変換 ) ;
) ;
再:あいまいな.datファイルを解析するのに役立ちますか?単位の変換、ラベルの追加これはあなたにいくつかのアイデアを与えるための例です:
NamesDefaultToHere ( 1 ) ;
//約10列のテーブルを作る
v = J ( 100 、 10年 、ランダム正規 ()) ;
dt = AsTable ( v ) ;
// 4、5、6列の最大値を含む新しい列をdtに作成します
v = : 第4列 << getValues ;
v = v || ( : 5列目 << getValues ) ;
v = v || ( : Col6 << getValues ) ;
vMax = 転置 ( VMax ( 転置 ( v ))) ;
dt << NewColumn ( "最大3、4、5" 、数値 、連続的 、値 ( vMax )) ;
再:あいまいな.datファイルを解析するのに役立ちますか?単位の変換、ラベルの追加ありがとうmsharp、
ええ、すべてのSは一緒に行きます、CYのは、Tのは、CFWの、など 各タイプの構造を繰り返してしまいました。 最もエレガントではないかもしれませんが、うまくいきます。
各グループの最大値を計算する列を追加する方法についてのヒントはありますか。各行の最大CYの新しい列のように?
そこから、カラム1に測定値(CY、T、S、CFW)、次にカウント、平均値、USL、およびCPKを表示する新しいサマリーウィンドウをポップアップするようにプログラムできます。
任意のヒント?
再:あいまいな.datファイルを解析するのに役立ちますか?単位の変換、ラベルの追加上記の赤いテキストでは、S列のみが必要でした。 私の側でそれが誤解だったと思います。
オプション:同じ変換を行いたいと仮定すると、最初の4つのラベル列の後のすべての列を単純に通過することができます。
conv_columns = {} ;
にとって ( 私 = 5 、私 <= ncols ( PEMdata_all ) 、私 ++、
colname = column(PEMdata_all、i)<<名前を取得。
挿入する (conv _columns 、列名 )
) ;
あるいは、正規表現を変更することもできます。
"CY。*"実際に対象となるC列がすべてCYで始まると仮定すればうまくいくようです。
"\ w + \ d \ d"少なくとも1つ以上の単語文字の直後に少なくとも2つの数字文字が続くものと一致します。 これは、たとえば 'CY22'と 'S12'の両方に一致しますが、'Carrier'には一致しません。
それほど詳細には説明しませんが、文字列を解析する方法はたくさんあります。正規表現は、多くの本を可能にし、いっぱいにしている主題です。 とはいえ、基本をすばやく習得し、YouTubeのビデオを見たり、JSLスクリプティングガイドのRegexのセクションを読んだりするのに1時間かかるのであれば、ある程度のコーディングを行う予定がある場合には価値があります。 正規表現は多くのプログラミング言語で使用されているので、知識は転送可能です。
再:あいまいな.datファイルを解析するのに役立ちますか?単位の変換、ラベルの追加驚くばかり!これは私が探していたものとまったく同じです。 "C"列を変換するための繰り返しセクションを追加しました。 乾杯!!
しかし、残っている唯一の問題は、他の 'name'列(Carrier#)の1つを選択していることです。 スクリプト行で「C. *」を検索し、「Carrier#」を除外するのは何でしょうか。
再:あいまいな.datファイルを解析するのに役立ちますか?単位の変換、ラベルの追加あなたの元同僚のコードは良く見えますが、そのコメントはあまりありません。 それを把握しようとして私の時間を無駄にするのではなく、最後にあなたが探している機能を追加しました。 下のコードを最後まで貼り付けるだけです。
関数型プログラミングを常に分離しておくことが常に最善であるため、とにかく優れたプログラミング方法です。 解析するコード、変換するコード、その他。 コードをきれいに保ち、デバッグしやすく、リファクタリングし、読み、修正します。
このコード(1)は、"S"で始まるすべての列を検索します。
(2)新しい列を追加して、前の列をインチに変換し、"(inch)"ラベルを付けます(簡単に変更して(mm)に変換できます)。
(3)mils列を削除します。 保持したい場合は、最後の2行のコードを削除するだけで済みます。
//追加部分
// S列を探す
S列 = {} ;
にとって ( 私 = 1 、私 <= ncols ( PEMdata_all ) 、私 ++、
列名 = カラム ( PEMdata_all 、私 ) << 名前を取得 ;
もし ( !不足している ( 正規表現 ( 列名 、 "S. *" )) 、
挿入する ( S列 、列名 )
)
) ;
//変換して新しい列を作成する
にとって ( 私 = 1 、私 <= ナイテム ( S列 ) 、私 ++、
ニューコル = PEMdata_all << 新しいコラム ( S列 [ 私 ] || " (インチ)" 、数値 、連続的 、
式 ( カラム ( PEMdata_all 、 S列 [ 私 ])[] * 1000年 ;);
//オプションで前のmils列を削除
ニューコル << 式を削除 ;
PEMdata_all << 列を削除 ( カラム ( PEMdata_all 、 S列 [ 私 ]) ) ;
) ;