列公式、相对值计算我一直在尝试为数据表编写一个新的列公式,其中计算值根据左侧列的值而变化。 我的意思是使用“Big Class”示例文件的示例。 假设有 200 行而不是 20 行,每个名字连续出现 10 次,就好像身高和体重在十年内每年记录一次,此外数据表中还会有另一列,其中包含收集数据的年份。 所有名字都具有相同的年份(即 2001、2002、2003... 2010)。 我想为新列编写一个公式,比方说是当年的高度减去 2003 年。 也许那一年他们开始服用维生素,你想展示这如何影响他们的身高增长。 然后,新列将填充诸如 -.5、0、.25、.7... 之类的值,所有这些值都是按名称与 2003 年指定高度的相对值。
既然 2003 年有 20 年,那么将使用什么样的 if/while/summarize/by/conditional 公式,以便将每个姓名的身高与同一个人的身高进行比较,而不是与数据表另一端的身高进行比较?
提前致谢!
回复:列公式,相对值计算我通过按照您的建议添加更多条件来启动并运行公式。 它运行良好,但在添加具有类似公式和代码行的另一列后,运行脚本会出现“无响应”错误。 运行调试器,我将问题归结为“trow = dt << get rows where...”。 调试器表示超过 50% 的运行时间都花在了这上面。
根据我的理解,JMP 会同时运行脚本,因此插入一个 Wait(0);或 dt << 运行公式;会让它喘口气。 使用这些的最佳实践是什么? 我尝试过以各种方式使用它们;只是公式前的一个到前后的几个分散,但仍然出现无响应问题。
数据表大约有三千行,还有两列公式,所以程序花时间思考是可以理解的。 我尝试在第二台具有更高规格的计算机上运行该脚本,但得到相同的响应。 是否还有其他方法可以执行“trow = dt << get rows where...”,这将使程序更容易分解它?
回复:列公式,相对值计算您所做的就是向公式中添加条件项。您需要将 IF 语句应用于公式以涵盖您指定的条件。这没有什么困难的。我给你展示的方法仍然适用,你只需添加其他条件即可。
回复:列公式,相对值计算的确。 在过去的几天里,我一直在失败和成功中取得进展,缓慢但坚定。 这个小问题只是我一直坚持的剧本的一部分。回复:列公式,相对值计算如果它有助于更好地解释它,让我们重新绘制这个例子。 对于 Big Class 样本,我想要一个新列,它将所有女性 F 身高与 KATIE 的身高进行比较,并将所有男性 M 身高与 JOHN 的身高进行比较。 这个新列将被称为“身高差”,每一行都会有该人的身高减去 KATIE 或 JOHN 的身高,具体取决于 M/F。 因此,第 2、3、4 行中 LOUISE、JANE 和 JACLYN 的“高度差”值分别为 2、-4 和 5。 (负数也是可以接受的)。 然而,当谈到 TIM 时,他的身高将与 JOHN 的 65 岁而不是 KATIE 的 59 岁进行比较。
更进一步,如果我希望对列表中除年龄 = 14 之外的每个名字都执行此操作,该怎么办?与 KATIE 和 JOHN 相比,年龄 != 14 的所有行仍将具有各自的“身高差”。 对于 14 岁的人,我希望该单元格为空白。
希望这能澄清问题,并提供一个可以工作的例子,而不是仅仅考虑它。 如果它让它变得更加混乱,那就完全忽略它:)
回复:列公式,相对值计算这两个假设都是正确的......但我建议你开始自己尝试这些想法,而不是问。 一个人真的不是通过询问来学习,而是通过尝试......失败然后成功
回复:列公式,相对值计算对于 Col Min 的第三行,从技术上讲,这些表格是字符,但是根据此帮助页面http://www.jmp.com/support/help/Statistical_Functions_2.shtml min 可以包含所有数字或所有字符串,因此这不应该成为问题,对吗?
其次,如果我不想将数据与最小值进行比较,而是与我选择的最小值进行比较,该怎么办? 在这种情况下设置 :Year == " xy z" 就足够了吗?
回复:列公式,相对值计算尝试这样的事情:
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()];