使用其他行数据的列公式你好! 我有一个数据库样式的数据表,用于存储来自一系列流程步骤的数据。 每行代表给定流程步骤中的一个样本,并且在该行中存在对父样本的引用。 母样品来自相同的材料,但在之前的工艺步骤中。 我主要通过 jmpapp 与此数据库表进行交互,因此脚本是操作数据的可接受的方式。
在此表中,我想计算有关每个样本的一些参数,包括该样本与父样本相比有何变化。 其中一些参数可能计算如下:
孩子的测量数据 * 父母的测量数据。
其他参数可以按如下方式计算(其中父级的计算值类似于上面的等式):
子项测量数据 * 父项计算值
我目前有一个有效的解决方案,但它非常慢,并且需要大量调用“重新运行公式”。
因此,在描述我当前的解决方案之前,我想获得一些关于实现此目标的最佳方法的建议。 也许我对数据结构的理解是错误的! 如果可能的话,如果我能将计算保留在这个表中,那就太棒了。
下面的图像显示了数据的当前结构以及如何将其从父级级联到子级以便进行所有正确的数学运算。
感谢您的帮助!

回复:使用其他行数据的列公式公式编辑器中的列摘要统计数据可以采用一个或多个分组变量。
Col Mean( :Parent Data, :ParentID )
将为您提供按 ParentID 分组的“父数据”中数据的平均值。
回复:使用其他行数据的列公式使用带有 row() 和下标的 where 语句查看此链接
JMP 指数匹配
但你尝试使用它的次数越多,它就会变得复杂...... 我发现对于这样的事情,使用 Excel 并编写导入数据脚本会更快/更容易。
回复:使用其他行数据的列公式@彼得_赫什,是的,这是有道理的,这就是我目前正在做的事情。 它工作正常,但由于我对数据进行分组的方式,我目前正在循环访问数据的不同子集,这需要相当多的时间。 另外,如果父数据列能够在父行更新时更新,那就太好了,这就是为什么我希望可以使用列公式。 如果我必须坚持使用子集和更新解决方案,我可以在表中使用“增殖父数据”脚本或其他脚本。
@唐麦考马克,仅使用“ParentID”列定义父/子关系。 每行都包含样本 ID 和父 ID,因此本质上,子项必须向父项查找链才能找到所需的数据。
我发现可以使用类似这样的列公式来获取父数据,但这些公式需要运行多次,以便数据可以通过依赖的行/列向下级联。 在第一个表的示例中,第一次运行公式时,:Data 中的数据将填充到 :ParentData 中,但 :ParentData/ParentData 列将留空,因为它的公式在填充数据之前运行。 或者.. .至少是这样的。
感谢您的想法!
dt = CurrentDataTable();
parent = :ParentID;
rows = dt << GetRowsWhere(:SerialNumber == parent);
Mean(Column(dt, "LayersMPAFraction")[rows]);
回复:使用其他行数据的列公式您如何定义父/子关系? 如果不首先了解这一点,就很难想出一个可靠的解决方案。 查看您的原始解决方案可能会有所帮助。
回复:使用其他行数据的列公式好的,我认为行之有效的技巧是仅使用父 ID 和父数据列对原始数据进行子集化。然后将其连接回原始数据。将父 ID 与子 ID 进行匹配。希望这是清楚的。如果不清楚,请告诉我
回复:使用其他行数据的列公式谢谢@彼得_赫什!
根据我的描述,是的,滞后可以正常工作,但你是对的,数据并不总是以这种方式构建。 子数据和父数据可以包含在不同数量的行中,距新单元格的距离不同。 例如,我可能有 3 行样本 ID A 数据,我希望对其进行平均以包含在子项的所有行中。 并且同一个父母可能有多个孩子。
看来我的例子过于简单化了哈哈。 也许您提到的另一种方式可以提供帮助?
回复:使用其他行数据的列公式@mringqui ,是的,使用公式生成器中的滞后函数进行此操作应该没有问题。我不确定你的数据结构是否总是这样。如果父母和孩子之间的间距并不总是相同,有一种不同的方法可以做到这一点。
回复:使用其他行数据的列公式有人有主意吗?