Sort()コマンドを使用して列をソートできず、最新の重複を除外するトラブルシューティングこんにちは!
私は今、複数のテーブルから複数のサンプルのパラメータをグラフ化するスクリプトを作成しようとしています。サンプルの名前はXX-AA(XXはサンプルのID /名前、AAはサンプルのタイムスタンプです(1、2、3など))になります。たくさんの質問をしていることをお詫び申し上げます、私はまだJSLでのプログラミングにかなり新しいです。
テーブルをマージした後、am / d / yh:m:sの形式でフォーマットされた "Date&Time"列でテーブルをソートしたいと思いました。目標は、サンプルの重複を削除し、最新の重複のみを保持し、他の重複は非表示にして除外することです。テーブルのマージから、私のスクリプトは次のようになります。
dtMerged=dt1<<Concatenate(dt2);
dtmerged<<Sort( By(:Sample ID), Order(Ascending));
dtmerged<<Sort(By(:Date & Time), Order(Ascending));
dtmerged<<Select Where(:Sample ID == :Sample ID[Row()+1]);
dtmerged<<hide and exclude;
何らかの理由で、"日付と時刻"列による並べ替えが行われていないようで、結果として、行選択が実際に正しく機能するかどうかはわかりません。その選択方法は、データエントリが複数の重複を持つ場合に重複を隠したり除外したりしますか?ソートが機能しないのは、列名に "&"記号が含まれているためです。
どうもありがとうございました。
再:トラブルシューティングSort()コマンドを使用して列をソートできなかったこと、および最新の重複を除外したことどうもありがとうジム!それが起こっているのを見るためにログを開かないようにすることは私にとって非常に愚かなことでした...私はそれをしないことをばかげたように感じます。
すべてが実際に正しくソートされたので、次のステップに進むことができます。これは、重複するデータを除外することです。私の目標は、サンプルの最新のエントリだけを残して、重複の以前の繰り返しを削除することでした。たとえば、午前5時に2つのサンプルにAA-02というラベルが付いていて、他のサンプルは同じ日の午前7時に撮影されたものです(これは表の「時間と日付」列に記録されています)。テーブルに5AMエントリを除外したいのですが、7AMエントリは残しておきます。
あるいは、同じことが3つのサンプルについても起こり得、例えばFJ − 01が3つの反復を有するとする:1つは5AMに取られ、1つは7AMに取られ、そして1つは10AMに取られる。繰り返しますが、目標は10AMエントリを保持することですが、5AMエントリと7AMエントリを除外することです。私は最初にサンプルIDで、次に日付と時刻でテーブルをソートしてから、次に示すようにSelect Whereコマンドを使用してJSLスクリプトを作成しようとしました。
MergedTable<MergedTable<MergedTable<MergedTable<<hide and exclude;
ただし、選択は行われず、ログには残念ながらエラーが含まれていないようです。私の選択基準に問題があり、選択できないようにしていませんか。
再:トラブルシューティングSort()コマンドを使用して列をソートできなかったこと、および最新の重複を除外したことコードを実行すると、JMPログに次のエラーが表示されます。
Name Unresolved: Date in access or evaluation of 'Date' , :Date/*###*/
In the following script, error marked by /*###*/
dtMerged = Current Data Table();
dtmerged << Sort( By( :Sample ID ), Order( Ascending ) );
dtmerged << Sort( By( :Date/*###*/ & Time ), Order( Ascending ) );
ここで指摘している問題は、"Date&Time"という名前の列がJMPによってブール値比較 "&"で使用される2つの名前(日付と時刻)として解釈されていることです。 あなたがする必要があるのは、状況を明確にするために:Name()関数を使うことです
dtMerged = dt1 << Concatenate( dt2 );
dtmerged << Sort( By( :Sample ID ), Order( Ascending ) );
dtmerged << Sort( By( :Name( "Date & Time" ) ), Order( Ascending ) );
dtmerged << Select Where( :Sample ID == :Sample ID[Row() + 1] );
dtmerged << hide and exclude;
。