<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />xy座標位置を持つ信号(私は60の興味ある信号がある)が10回の測定にわたって繰り返される回数(10回の測定にわたって何回現れるか)を決定するための最良の方法を誰もが知っていますか。 私は識別された20,000以上の信号のリストを持っています(すべて異なるxy位置を持っています)が、私はそれらのうち60回が繰り返される回数だけを見たいです(それぞれの信号は同じxy座標を持つことはできません) 。 xy位置も同じ信号に対して少しだけ変化する可能性があるため、xy位置にある程度の許容誤差がある必要があります。 ディスカッション掲示板を検索しても関連性があるものは見つかりませんでしたが、知っている場合は適切なディスカッションを選択してください。 ありがとうございます。
etucker0 、
私がそれを手に入れたかどうか見てみましょう。もし私が正しく理解しているのであれば、測定値と位置があり、ある距離で(ある距離で)測定値に対してある程度の許容誤差で何回繰り返しがあるか知りたいのです。たとえば、ハリケーンのサンプルデータに場所と風速の測定値を含めます。特定の距離(KMでの半径)内で(ノットで)同様の風の測定値が何回あるかを各行について知りたい場合は、次のスクリプトを使用できます。
最後に、テーブルの各行に「一致する」測定値がいくつかあります。
別の方法として、比較したい事前選択リストがある場合は、2つのテーブル間でデータを比較することもできます。
これがあなたが探しているものかどうか私に知らせてください。
クリアグローバル () ;
ここにデフォルトの名前 ( 1 ) ;
//データファイルを開く(ドット) - これは更新したい観測値を含みます
しみ = 開いた ( "C:¥Program Files(x86)¥SAS¥JMPSW¥11¥Samples¥Data¥Hurricanes.jmp" ) ;
点 = データ表 ( しみ ) << サブセット ( サンプルサイズ ( 2000年 ) ) ; //速度を小さくするためのテーブルを小さくする
閉じる ( しみ 、保存しない ) ;
//風の測定にノイズを加える
点 << 新しいコラム ( "風" 、式 ( : 名 ( "風(結び目)" ) + ランダムノーマル () ) ) ;
//カウント列を導入します
点 << 新しいコラム ( 「繰り返し」 ) ;
//テーブルから経度と緯度の値を抽出します - ラジアンとして
バツ = ( カラム ( 点 、 "経度" ) << getValues ) * パイ () / 180 ;
よ = ( カラム ( 点 、 "緯度" ) << getValues ) * パイ () / 180 ;
//計算関数をKMで宣言します
ハバシン = 関数 ( { long1 、 lat1 、 long2 、 lat2 、 R = 6371 } 、
{ デフォルトのローカル } 、
ある = 罪 ( ( lat1 - lat2 ) / 2 ) ^ 2 + コス ( lat1 ) * コス ( lat2 ) * 罪 ( ( long1 - long2 ) / 2 ) ^ 2 ;
c = 2 * 日焼け ( ある ^ 0.5 、 ( 1 - ある ) ^ 0.5 ) ;
日 = R * c ;
) ;
//距離と風速の許容範囲を定義する
距離 = 100 ; // Kmで
差 = 10年 ; //結び目で
待つ ( 0.01 ) ;
//テーブルの行に沿って関数を実行します
にとって ( 私 = 1 、私 <= N列 ( 点 ) - 1 、私 ++、
z = 0 ;
にとって ( それ = 1 、それ <= N列 ( 点 ) - 1 、それ ++、
もし (
ハバシン ( バツ [ 私 ] 、よ [ 私 ] 、バツ [ それ ] 、よ [ それ ] ) < 距離 //距離の条件
& 腹筋 ( : 風 [ 私 ] - : 風 [ それ ] ) < 差
、 //風の測定の違いの条件
z ++; //マッチを数える
)
) ;
z - ; //自分自身と一致するものを削除します。
: 繰り返される [ 私 ] = z ; //テーブルを更新する
) ;
//結果をマッピングする
グラフビルダー (
コントロールパネルを表示 ( 0 ) 、
変数 ( バツ ( : 経度 ) 、 Y ( : 緯度 ) 、サイズ ( : 繰り返される ) ) 、
要素 ( ポイント ( バツ 、 Y 、伝説 ( 1 ) 、ジッタ ( 1 ) ) ) 、
SendToReport (
ディスパッチ ( {} 、 「グラフビルダー」 、 FrameBox 、 { 背景マップ ( 画像 ( 「単純な地球」 ) ) 、グリッド線の順序 ( 2 ) 、参照行の順序 ( 3 )} )
)
)
こんにちはロン、
すみません、私はもっとはっきりしているべきでした。 このモックデータは1回目の測定のみからの2つの信号に対するものです。 そのため、これら2つの信号についてxとyの値がわずかにシフトした(およびID番号が確実に異なる)9つの他の繰り返し測定があります。 また、振幅SD1とSD2も少し異なります。 それが役立つことを願っています。
繰り返しは次のようになります。
ID | バツ | よ | 振幅SD1 | 振幅SD2 | | | | | | |
|---|
21775 | -22285.12 | -6664.55 | 2950 | 0 |
21799 | -17723.33 | 7946.01 | 0 | 5050 |
- エリック
etucker0
よくわからない。あなたは繰り返しと非繰り返しの例をあげることができますか?行または列にまたがっていますか。
ロン
こんにちはロン、
これがデータの例です。2行はそれぞれ2つの「シグナル」です。 留意すべきことは、IDは実際には繰り返し測定結果ごとに変わるということです(測定器は測定ごとにすべての信号に番号を付け直すので、繰り返し測定ごとに同じ信号を取り出すためにIDを使用することはできません)。 SD1とSD2は、各信号にデータを提供する異なる測定チャンネルです。 私の最初の記事で述べたように、同じ信号の位置xとyは少し変わることがあります。
ID | バツ | よ | 振幅SD1 | 振幅SD2 | | | | | | |
|---|
21770 | -22281.78 | -6669.19 | 3000 | 0 |
21792 | -17728.65 | 7949.11 | 0 | 5000 |
X、Yのペアは、小数点以下2桁に丸められ、信号の「名前」を決定しますか?その場合、丸められた値を連想配列へのキーとして使用することは、類似したペアの出現回数を数えるためのアプローチになるかもしれません。
counts =連想配列();
<< SetDefaultValue(0)をカウントします。
[char(round(pi()、2))|| "、" || char(round(e()、2))] + = 1;
表示(カウント)。
count = ["3.14,2.72" => 1、=> 0];
こんにちは etucker0 、
あなたがデータの少しのサンプルを与えるならば(私は偽物かもしれません)私は私があなたを助けることができると思います。私は自分自身で同様のデータを扱っています。ただし、解決策はテーブルの作成方法によって異なります。