在 P&G 的内部 JMP 用户社区页面上提出了以下问题。 转至本论坛:
我有两个表要根据时间戳连接。 然而,由于数据源的原因,它们的时间并不相同。 我在 JMP 中找到的唯一选项是完全匹配。 JMP 中是否有选项可以使用最近连接,类似于 pandas join 或 Excel Vlookup 的工作方式?
P&G JMP 用户社区试图给出一些答案。 有比我们尝试推荐的更好的解决方案吗?
答案#1:
将 Excel 中的两个表作为单独的工作表删除,将 vlookup 列添加到引用工作表 2 的工作表 1,然后移植回 JMP 进行连接? 我还没有在 JMP 中看到最近的匹配功能,但如果它存在的话我会很感兴趣......
答案#2:
“最近连接”的定义不一致。 我对VLOOKUP的记忆(除非它被改变)是从数据表X中取出时间X并将其与数据表Y中最接近的时间Y相匹配,使得X<=Y(或者是Y<=X),有时可以是非常长的间隙,尤其是在数据表 X 或数据表 Y 中以不规则间隔收集数据时。 不规则间隔的可能性确实会使像这样的连接变得复杂。
遗憾的是,JMP 中没有快速方法,但您可以尝试以下几种方法。
我之前尝试过的一种方法是将样条曲线拟合到感兴趣的关键测量值(X 变量 = 时间),然后保存预测公式并将其传输到另一个表。 如果操作正确,这实际上会插入关键测量值并将它们匹配。
另一种选择是进行全连接(时间戳不匹配),然后创建一个 Formula 列来检查数据表 X 中的 Time 是否丢失;如果是,则使用数据表 Y 中的时间,否则使用数据表 X 中的时间。然后对这个新的时间列进行排序。 然后为每个感兴趣的关键测量创建公式。 在这些公式中,检查是否缺少关键测量值。 如果未丢失,则将关键测量值带入,否则,对您命名的此新公式列的任何内容使用滞后函数(公式编辑器中的行函数组),以将观察值从一行向上拉下来。
答案#3:
在许多情况下,您可以在加入之前以相同的方式对两个时间戳进行分箱(例如,按秒、10 秒、1 分钟...分箱数据),从而创建最接近的匹配。 只要时间戳不是“太大不同”并且您可以接受一些数据聚合,这种方法就非常有效。
分箱是JMP中的列函数
原始提问者的后续行动:
感谢您的建议。 我很可能会在 JMP 之外进行连接,然后在组合后进行分析。
不确定还有多少其他人遇到过此问题,但这可能是建议传递给 JMP 将此功能内置到连接对话框中,而不是在其外部执行其他步骤。
@彼得_赫什我理解,并且我同意推荐 JMP 作为理想的数据清理和整理软件可能是不明智的,至少对于像这样的情况是这样。 JMP 的强项始终是探索和分析,而不是不寻常的数据整理任务。 目前,基于时间的数据连接问题最好在 JMP 之外的编码语言中处理,在这种情况下,您可以在具有多对一映射或始终关闭的时间指示等情况下有意决定要做什么。再次感谢。
@mjoner我们暂时不打算将其添加到 JMP 中。令人担忧的是,就真正的连接而言,从真正的匹配更改为模糊匹配并不是我们所愿意的。使用分箱甚至按时间戳对表进行排序以及使用比较数据表应该有助于解决一些挑战。
@mjoner ,有一个解决方法,可以使用公式标题上的右键单击选项内的快速公式。这将使日期和时间四舍五入到最接近的分秒五秒。我知道这不像模糊匹配那么方便,但它是另一种选择。我会确保开发人员知道