列の式、相対値の計算データテーブルの新しい列数式をスクリプト化しようとしています。計算値は左側の列の値に基づいて変化します。 「Big Class」サンプル ファイルを使用した意味の例。 行が 20 行ではなく 200 行あり、あたかも身長と体重が 10 年間にわたって年に 1 回記録されているかのように、それぞれの名前が 10 回連続して出現するとします。さらに、データ テーブルには、データが収集された年を示す別の列があるとします。 。 すべての名前は同じ年になります (つまり、2001、2002、2003...)。 2010)。 数式をスクリプト化したい新しい列は、その年の高さから 2003 年を引いたものになります。 おそらくその年に彼らはビタミンを摂取し始め、それが彼らの身長の伸びにどのような影響を与えたかを示したいと思うでしょう。 新しい列には、-.5、0、.25、.7... などの値が入力されます。これらはすべて、名前ごとに 2003 年の指定された高さに対する相対値です。
2003 年は 20 年になるので、各名前の身長がデータ テーブルの反対側の人物ではなく、同じ人物の身長と比較されるようにするには、どのような if/while/summary/by/条件式が使用されるでしょうか?
前もって感謝します!
Re: 列の式、相対値の計算あなたが提案したように、さらにいくつかの条件を追加することで、式を実行できるようにしました。 正常に動作していましたが、同様の数式とコード行を含む別の列を追加した後、スクリプトを実行すると「応答なし」エラーが発生します。 デバッガーを実行すると、問題は「trow = dt << get rows where...」に集約されました。 デバッガーは、実行時間の 50% 以上がそれに費やされていると言っています。
私の理解では、JMP はスクリプトを一度に実行するため、Wait(0); を挿入します。または dt << 数式を実行します。一息つけるだろう。 これらを使用する際のベストプラクティスは何ですか? 私はこれらをさまざまな方法で使用してみました。数式の前に 1 つだけ、前後にいくつか分散しても、依然として応答なしの問題が発生します。
データ テーブルには約 3,000 行があり、数式が含まれる列が 2 つあるため、プログラムが考えるのに時間がかかるのは当然です。 より高いスペックの 2 台目のコンピューターでスクリプトを実行してみましたが、同じ応答が得られました。 「trow = dt << get rows where...」を実行するための、プログラムが簡単に分解できる他の方法はありますか?
Re: 列の式、相対値の計算ここで行っているのは、式に条件項目を追加することだけです。指定した条件をカバーするには、式に IF ステートメントを適用する必要があります。これには何も難しいことはありません。私が示した方法は依然として適切ですが、必要なのは他の条件を追加することだけです。
Re: 列の式、相対値の計算確かに。 ここ数日間、これで失敗したり成功したりを繰り返しており、ゆっくりと、しかし確実に進歩しています。 この問題は、私が行き詰まっているスクリプトの一部にすぎません。Re: 列の式、相対値の計算わかりやすく説明するのに役立つ場合は、例を再描画してみましょう。 Big Class サンプルでは、すべての女性の F の身長を個別に KATIE の身長と比較し、すべての男性の M の身長を JOHN の身長と比較する新しい列が必要です。 この新しい列は「身長差」と呼ばれ、各行には、男性/男性に応じて、その人の身長から KATIE または JOHN の身長を引いた値が表示されます。 したがって、ルイーズ、ジェーン、ジャクリンが含まれる行 2、3、4 の「高さの差」の値は、それぞれ 2、-4、および 5 になります。 (負の数も許容されます)。 ただし、TIMの場合、彼の身長はKATIEの59ではなく、JOHNの65と比較されます。
さらに一歩進めて、リスト上の年齢 = 14 以外のすべての名前に対してこれを実行したい場合はどうなるでしょうか。年齢 != 14 であるすべての行には、KATIE と JOHN と比較したそれぞれの「身長差」が残ります。 14 歳の方はセルを空白にしておいてください。
これで問題が解決し、単にそれを取り上げるのではなく、取り組むための例が得られることを願っています。 それがさらに混乱を招く場合は、完全に無視してください:)
Re: 列の式、相対値の計算どちらの仮定も正しいです......しかし、質問するのではなく、そのようなアイデアを自分で試し始めることをお勧めします。 本当に人は尋ねることによって学ぶのではなく、試みることによって学びます...失敗してから成功します
Re: 列の式、相対値の計算Col Min の 3 行目の場合、これらのテーブルは技術的には文字になりますが、このヘルプページによるとhttp://www.jmp.com/support/help/Statistical_Functions_2.shtml min にはすべて数値またはすべて文字列を含めることができるため、プローブではないはずですよね?
次に、データを最小値と比較するのではなく、自分が選択した値と比較する場合はどうなるでしょうか。 このシナリオでは、: Year == " xy z" を設定するだけで十分でしょうか?
Re: 列の式、相対値の計算次のようなことを試してください。
dt = Current Data Table();
tname = :name;
tyear = Col Min( :Year, :name );
trow = (dt << get rows where( tname == :name & tyear == :Year ))[1];
-1 * :weight[trow] + :weight[Row()];