その行の他のデータに依存するデータを入力する新しい列をテーブルに追加する方法を見つけようとしています。 データ フレーム内には複数の発酵があります。 それぞれには空白の値があります。 新しい列に各発酵の空白の値を入れて、処理値から差し引くことができるようにしたいと考えています。 また、新しい列を作成するよりも良い方法があれば、それも素晴らしいでしょう。 ありがとう。
作成されたサンプルデータ:
| 発酵 | 処理 | 価値 | 発酵ブランク値 |
| あ | 1 | 98 | 6 |
| あ | 2 | 73 | 6 |
| あ | 空白 | 6 | 6 |
| B | 1 | 84 | 5 |
| B | 2 | 86 | 5 |
| B | 空白 | 5 | 5 |
治療 = 空白の場合の「値」は、治療が空白でない場合の値より常に小さいですか?その場合は、Treatment によって ColMin 関数を使用するだけです。そうでない場合は、同様のことを行うやや不器用な方法は、まず、Treatment が Blank = 1 に等しくなく、Treatment = Blank が 0 に等しくなる列を作成してから、ColMin By アプローチを使用することだと思います。
新しい列にない場合、値はどこにあるでしょうか?
これを新しい列として追加する方法の 1 つの式を次に示します。
Col Sum(If(:Treatment == "Blank", :Value, .), :Fermentation)
この式を試行すると、次のようなエラーが発生します
「Col Sum」のアクセスまたは評価で数値列が必要です。Col Sum/*###*/IF(:Treatment == "Blank", :Value,.):Fermentation)
「値」列は数値が連続しているため、式のどの部分が気に入らないのかわかりません
おそらく、データテーブルの Value 列が数値 (おそらく文字) としてフォーマットされていません。
これは、実際に機能するテーブルの例を含むスクリプトです。 左側の列とそのモデリング タイプを見てください。値は連続です (JMP ではデータ タイプ = 文字、モデリング タイプ = 連続にすることはできません (ただし、モデリング タイプから直接見ることはできません...)。 。
Names Default To Here(1);
dt = New Table("Untitled",
Add Rows(6),
Compress File When Saved(1),
New Column("Fermentation", Character, "Nominal", Set Values({"A", "A", "A", "B", "B", "B"})),
New Column("Treatment",
Character(16),
"Nominal",
Set Values({"1", "2", "Blank", "1", "2", "Blank"})
),
New Column("Value",
Numeric,
"Continuous",
Format("Best", 12),
Set Values([98, 73, 6, 84, 86, 5])
),
New Column("Fermentation Blank Value",
Numeric,
"Continuous",
Format("Best", 12),
Set Values([6, 6, 6, 5, 5, 5])
)
);
dt << New Column("Val", Numeric, Continuous, Formula(
Col Sum(If(:Treatment == "Blank", :Value, .), :Fermentation)
));

それは処理ではなく発酵によるものであるべきでした。