誰がデータテーブルの行を完成するための基本的な機能を最適化するのを手伝うことができますか?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />こんにちは皆さん、
以下の問題について、より経験豊富なJMPユーザーからのアドバイスを探しています。
私は頻繁にユニットあたり最大4行を含むデータテーブルを操作する必要があります。ただし、システムパラメータの中には、そのユニットに関連する他の行にも適用されますが、個々のユニットの最初のエントリに対してのみ記録されるものがあります。
データを分析してグループ化できるようにするには、これらのシステムパラメータをユニットのすべての行について完成させる必要があります。
データベースへのデータ記録を変更する機会がないので、分析の前にデータベースを抽出した後にこれを行う必要があります。
そのため、以下に示すように回避策を作成しました。
望ましい結果が得られますが、非常に遅く、実際には1000行を超えるデータテーブルには適していません。
dt =現在のデータテーブル()。
dt <<並べ替え(By(:unit)、並べ替え(昇順)、表置換);
:param_1 <<式(各行について(:param_1 [row()+ 1] =(if(:unit [row()] ==:unit [row()+ 1]の場合は、
:param_1 [row()]、:param_1 [row()+ 1]))、
)
評価式
;
私はこの問題を解決するためのもっと効率的でエレガントな方法があると確信しています、しかし私は私のスキルが非常に限られていることを認めなければなりません。
私はより経験豊富なユーザーからのどんな意見でも感謝します。
ありがとう、
ルッツ
再:誰がデータテーブルの行を完成させるための基本的な機能を最適化するのを助けることができますか?どうもありがとう。今日のオフィスでコードを最初にテストします。
再:誰がデータテーブルの行を完成させるための基本的な機能を最適化するのを助けることができますか?私のコードを40,000行のテーブルに対してテストしたところ、1秒もかからずに戻ってきました。
再:誰がデータテーブルの行を完成させるための基本的な機能を最適化するのを助けることができますか?このコードを試してください。 1列がUnit、もう1列がParam_1という2列のテーブルがあるとします。 パフォーマンステストは行っていませんが、これはテーブルをすばやく通過する可能性があります。 必要な場合にのみ値を設定します。
dt = 新しいテーブル ( 「単位パラメータの例」 、
行を追加 ( 16 ) 、
新しいコラム ( "単位" 、
キャラクター 、
公称 、
設定値 (
{ 「あ」 、 「あ」 、 「あ」 、 「あ」 、 "b" 、 "b" 、 "b" 、 "b" 、 "c" 、 "c" 、 "c" 、 "c" 、 "d" 、 "d" 、
"d" 、 "d" }
)
) 、
新しいコラム ( "Param_1" 、
数値 、
連続的 、
フォーマット ( "ベスト" 、 12年 ) 、
設定値 ( [ 32 、 32 、 32 、 32 、 25年 、 。 、 。 、 。 、 。 、 14年 、 。 、 。 、 。 、 。 、 13年 、 。 ] )
)
) ;
//欠けているものがセットの2、3、4の位置にあるように、単位とパラメータでソートする
dt << ソート ( によって ( : 単位 、 : param_1 ) 、注文 ( 上昇 、降順 ) 、テーブルを交換 ) ;
//最初の行の値を取得します
old_unit = dt : 単位 [ 1 ] ;
old_param = dt : param_1 [ 1 ] ;
にとって ( 私 = 2 、私 <= 眉 ( dt ) 、私 ++、
1ユニット = dt : 単位 [ 私 ] ;
one_param = dt : param_1 [ 私 ] ;
もし ( 1ユニット == old_unit & 不足している ( one_param ) 、
dt : param_1 [ 私 ] = old_param ;
) ;
もし ( 1ユニット != old_unit 、
old_unit = 1ユニット ;
old_param = dt : param_1 [ 私 ] ;
) ;
) ;