我试图弄清楚如何向表中添加新列,该表将填充依赖于该行中其他数据的数据。 我们在数据框中进行了多次发酵。 每一项都有一个空白值。 我希望将每次发酵的空白值放入新列中,以便我可以从处理值中减去它。 另外,如果有比创建新列更好的方法来做到这一点,那就太好了! 谢谢。
组成示例数据:
| 发酵 | 治疗 | 价值 | 发酵空白值 |
| A | 1 | 98 | 6 |
| A | 2 | 73 | 6 |
| A | 空白的 | 6 | 6 |
| 乙 | 1 | 84 | 5 |
| 乙 | 2 | 86 | 5 |
| 乙 | 空白的 | 5 | 5 |
当治疗=空白时的“值”总是小于当治疗不为空白时的值吗?如果是这样,你可以只使用 ColMin 函数,通过治疗。如果不是,我认为执行类似操作的一种有点笨拙的方法是首先创建一个列,使 Treatment 不等于 Blank = 1 且 Treatment = Blank 等于 0,然后使用 ColMin By 方法。
如果不在新列中,您将在哪里获得该值?
这是一个如何将其添加为新列的公式
Col Sum(If(:Treatment == "Blank", :Value, .), :Fermentation)
当我尝试这个表达式时,我收到一条错误消息
在访问或评估“Col Sum”时需要数字列,Col Sum/*###*/IF(:Treatment == "Blank", :Value,.):Fermentation)
“值”列是数字连续的,所以我不确定它不喜欢表达式的哪一部分
数据表中的值列很可能未格式化为数字(很可能是字符)。
这是一个带有示例表的脚本,可以正常工作。 查看左侧的列及其建模类型,值是连续的(在 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)
));
