ユーザー入力開始日の前後の行の範囲を選択します私は長年にわたる大規模なデータセットを使用しています。これは、「ID」と「Test_date」という名前の2つの列に簡略化できます。 日付は「m/d / y」としてフォーマットされ、データテーブルは時系列で並べ替えられます。 テスト日がユーザーが指定したTest_dateから1年以内(前または後)のすべての行を選択してから、他のすべての行をデータテーブルから削除したいと思います。
以下は私がこれまでに試したことです。 入力IDの日付の上限と下限を作成しましたが、select where()を使用してその範囲内の日付を選択できません。 代わりに、「SelectWhereへの引数がtrueまたはfalseに評価されなかった、それは[0]..。」というエラーが表示されます。 "。 これに関する助けをいただければ幸いです。
dt << current data table();
dt << new column("T_YEAR", numeric, continuous, set each value(:Test_date / (365*86400)));
setpoint = ;//user specified numeric value
set_row= dt << get rows where(:ID == setpoint);
set_date = dt:T_YEAR[set_row] ;
set_min = (set_date - 1);
set_max = (set_date + 1);
dt << select where(:T_YEAR >= set_min & :T_YEAR <= set_max )
<< invert row selection
<< delete rows;Re:ユーザー入力開始日の前後の行の範囲を選択します@ben_T 、あなたの返事と私の返事が重なっているようです。
これは私のために働きます。
dt=open("$SAMPLE_DATA\TechStock.jmp");
set_date=datemdy(12, 15, 2000);
set_min = (set_date - In Days(5));
set_max = (set_date + In Days(5));
dt << select where(:Date >= set_min & :Date <= set_max )
<< invert row selection
<< delete rows;
サンプルデータに1年以上含まれていないという理由だけで、年ではなくIn Days()に変更する必要があったことに注意してください。ただし、それ以外の場合は、これで問題ありません。
Re:ユーザー入力開始日の前後の行の範囲を選択しますこれを行う方法はたくさんあります。
あなたは使用することができます年間で()数年間のJMP日時値を返す関数、または日付の増分()年数を加算または減算する関数。
また、あなたは得ることができます年()設定した日付の1を追加して、日付MDY() JMPの日付値を提供する関数。
set_min = (set_date - In Years(1));
set_max = (set_date + In Years(1));
//or
set_min = Date Increment(set_date, "Year", -1, "actual");
set_max = Date Increment(set_date, "Year", 1, "actual");
//or
set_min = Date MDY( Month( set_date ), Day( set_date ), Year( set_date ) - 1 );
set_max = Date MDY( Month( set_date ), Day( set_date ), Year( set_date ) + 1 );
Re:ユーザー入力開始日の前後の行の範囲を選択しますはい、それは基本的に、Test_date /(365 * 86400)を使用して日付を年に変換した新しい列「T_YEAR」を作成することによって行ったことです。 私は両方を試しましたが、どちらの方法でも機能します。 この問題は、select where()でset_min変数とset_max変数を使用して、これらの値の間のすべての行を検索するときに発生するようです。
Re:ユーザー入力開始日の前後の行の範囲を選択します日時は秒単位であるため、次のようにします。
set_min = (set_date - (1 * 365 * 24 * 3600));
set_max = (set_date + (1 * 365 * 24 * 3600));