1つの(最初の)列に基づいて同じだが、別の列に基づいて異なる行を選択するにはどうすればよいですか?やあみんな。
ある列に基づいて同じだが別の列に基づいて異なるレコード(行)を分離できるスクリプト(JMP 13)を作成しようとしています。詳しく言うと、同じサンプルに対して2つの観察/測定を行いましたが、一部のサンプルでは結果が異なります。これらのケースを分離するにはどうすればよいでしょうか?私はこれを試しました(そして、非常に基本的なことを見逃している可能性があります - 申し訳ありません:(
// Assume the columns are "ColumnA" and "ColumnB"
dt = Current Data Table(); // Reference the current data table
// Loop through each row and compare values in the specified columns
For(i = 1, i <= N Row(dt), i++,
// Compare with every other row to find matches on ColumnA but differences on ColumnB
For(j = i + 1, j <= N Row(dt), j++,
If(dt:ColumnA[i] == dt:ColumnA[j] & dt:ColumnB[i] != dt:ColumnB[j],
dt << Select Row(i);
dt << Select Row(j);
)
)
);
この問題に関してご支援いただければ幸いです。
自動化とスクリプトRe: 1 つの (最初の) 列に基づいて同じだが、別の列に基づいて異なる行を選択するにはどうすればよいでしょうか素晴らしいです。本当にありがとう、ジム。
Re: 1 つの (最初の) 列に基づいて同じだが、別の列に基づいて異なる行を選択するにはどうすればよいでしょうか機能
dt << 選択場所()
指定された条件に一致するすべての行を一度に選択し、2番目のFor()ループを省きます。また、はるかに効率的になります。以下は例です。
Names Default To Here( 1 );
dt =
// Open Data Table: Big Class.jmp
// → Data Table( "Big Class" )
Open( "$SAMPLE_DATA/Big Class.jmp" );
For Each Row(
currHt = :height[Row()];
currWt = :weight[Row()];
dt << select where( :height == currHt & :weight != currWt, current selection( "extend" ) );
);