<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />こんにちは、
JMP10を使用しています。データテーブル内のデータの重複行を削除するスクリプトを作成しようとしています。私の試みの例は次のとおりです。
// 始める。
// データテーブルを作成します。
dt = open("$SAMPLE_DATA/Big Class.jmp");
dt << ランダムに選択(5);
subdt = dt << Subset(出力テーブル名("subset"), Invisible);
dt << Concatenate(subdt, 最初のテーブルに追加);
Close(subdt、保存なし);
dt << 選択をクリア;
// bigClass の重複行を検索して削除します。
icol = dt << New Column( "Index", Numeric, Continuous, Formula( Sequence( 1, N Row( dt ), 1, 1 ) ) );
repcol = dt << New Column( "データの繰り返し",
数値、
継続的、
Formula( If( :Index == Col Minimum( :Index, :name, :age, :sex, :height, :weight ), 1, 0 ) )
);
dt << Select Where( As Column(repcol) == 0 );
dt << 行の削除();
dt << 列の削除( {icol, repcol} );
// 汎用データ テーブルの重複行を検索して削除します。
Colnames = dt << 列名を取得();
icol = dt << New Column( "Index", Numeric, Continuous, Formula( Sequence( 1, N Row( dt ), 1, 1 ) ) );
repcol = dt << New Column( "データの繰り返し",
数値、
継続的、
Formula( If( :Index == Col Minimum( :Index, /* ここに列名を挿入します。 */ )、1、0 ) )
);
dt << Select Where( As Column(repcol) == 0 );
dt << 行の削除();
dt << 列の削除( {icol, repcol} );
// 終わり。
私の問題は、このスクリプトを汎用データテーブルで実行したいということです。列名リストを数式に挿入するにはどうすればよいですか?これを行うためのもっと賢い方法はありますか?
ありがとう!
重複を見つけるには、インデックス列で Col Min() を使用するのが賢明です。
私は通常、「テーブル」->「概要」を使用して、重複のないデータテーブルを取得します。 重複を定義するすべての列でグループ化するだけです。 これには、元のテーブルに重複行が何行あったかを示す列 (N 行) が提供されるという追加の利点があります。

-ジェフ
早すぎた。 最初に投稿されたバージョンでは、:Name("eg ∆X") 構造を必要とする複雑な列名では失敗します。 上記のコードを編集したところ、より一般的に動作するようになりました。
ありがとうMS!非常に賢い。それがどのように機能するかを正確に研究する必要があります。
Col Min() を使用して重複を見つけるという素晴らしいアイデアです。
以下は、あなたのアイデアに基づいた、機能すると思われる代替アプローチです。 一時的な数式列が必要ないため、より簡単になります。
// サンプルデータテーブルを作成します。
開ける( "$SAMPLE_DATA/Big Class.jmp" ) <<連結する(開ける( "$SAMPLE_DATA/Big Class.jmp" ) 、最初のテーブルに追加) ;
// 汎用テーブルから重複を削除します
dt =現在のデータテーブル() ;
列分=解析する( "Col Min( Row(), :Name(\!") ||連結アイテム( dt <<列名を取得する(弦) 、 "\!")、 :名前(\!"" ) || 「\!」))」 ) ;
重複= [] ;
各行について(もし(列分!=行() 、重複|/=行() ) ) ;
dt <<行を削除する(重複) ;