对浮点 EFT 值使用 Update() 时出现问题I am merging sample-level metadata with time-series raw measurements using Python’s merge_asof and then updating the time-series table in JMP using Update(). Both tables contain columns for time (EFT) and batch ID.
问题:
Python 合并操作能正确处理“最近邻”类型:
<CODE class="whitespace-pre! language-python">
merged_batch = pd.merge_asof(
metadata_batch.sort_values('EFT_val'),
timeseries_batch.sort_values('EFT_val'),
left_on='EFT_val',
right_on='EFT_val',
direction='nearest'
)
JMP Update() 对接近的值失败:
<CODE class="whitespace-pre! language-jsl">
timeSeriesTable << Update(
With( merged_batch ),
Match Columns(
:EFT_val = :EFT_val,
:Batch_ID = :Batch_ID
)
);
-
元数据表的行数比时间序列表少。
-
即使在用户界面上看起来完全相同的值,也会因为浮点精度差异而导致计算失败。
当我在“merged_batch”单个表中绘制图表时,一切正常,但在“timeSeriesTable”更新后,图表无法绘制所有数据点,并且还会遗漏一些行。
像这样:
0 - 至今
87.9669444444445 - 当前
111.966666666667 - 缺失
135.966111111111 - 缺失
183.965555555556 - 至今
205.965277777778 - 至今
自动化和脚本编写基础数据分析与建模数据融合与清理数据探索与可视化回复:关于浮点 EFT 值 Update() 函数的问题能否提供一些示例表?您是否尝试在 JMP 中将表 208.0955556 与表 209 连接起来?
JMP本身没有“连接最近邻”功能(虽然可以通过脚本实现,社区/插件库里也有相关的脚本)。此外,至少有一个用户在愿望清单中提出了这项功能的需求。
回复:关于浮点 EFT 值 Update() 函数的问题是的,由于 JMP 没有这个功能,所以我使用了 Python,它运行良好,并且与代码集成得非常好。我附上了表格供您参考。
不,我不是想把208.0955556 和 209 连接起来。209 是记录值,而浮点数是机器输出的,所以我才在 Python 中使用 mergeasof 函数来查找最接近的值。
回复:关于浮点 EFT 值 Update() 函数的问题是存在什么问题,还是只是提醒大家 JMP 目前不具备此功能?
回复:关于浮点 EFT 值 Update() 函数的问题问题在于——当我在“merged_batch”单个表中绘制图表时,一切正常,但在“timeSeriesTable”更新后,图表无法绘制所有数据点,并且还会遗漏一些行。
回复:关于浮点 EFT 值 Update() 函数的问题“111.966666666667 - 缺失”

我们是否拥有创建图表所需的所有表格?我们是否应该假设元数据与 merged_batch 相同?

对我来说,连接操作是可行的,但我真的不信任它,因为使用浮点数进行精确连接可能会得到你意想不到的结果,因为它们往往不够精确(浮点数学)。
您可以尝试增加数字的小数位数,以便更准确地查看 JMP 认为它们是多少。

回复:关于浮点 EFT 值 Update() 函数的问题Join 对我来说也有效,虽然这两列的时间戳相似,因为我是从原始数据本身进行筛选的,但我对 JMP 的更新行为不太满意。
我不使用 Join 的原因是,它最终会创建多个列名,例如“表名”的“列名”和“n”,其中“n”是多次运行的后续表编号,我遇到了这个障碍,所以改用了更新表。
所以更好的方法是使用固定的小数吗?比如 1e-8 或 1e-12?
dt = Current Data Table();
col = Column( dt, "EFT" );
// Replace each value with a rounded version (e.g., 8 decimals)
col << Set Each Value( Round( :EFT, 1e-14 ) );
回复:关于浮点 EFT 值 Update() 函数的问题我使用 Join 来演示,因为使用提供的数据进行 Update 操作没有任何作用,但 Join 可以合并同名列(并使用第二个表中的数据更新主表)。
我认为四舍五入或许是一个办法。或者,您可以像之前那样使用 pandas 来构建最终表格吗?另外,提醒一下,您可能不想那样使用 `<< Set Each Value`,因为我不确定 JMP 是否已经将其更改为预期行为。
回复:关于浮点 EFT 值 Update() 函数的问题此功能已搁置一段时间——请支持@jthi的愿望并投票:
添加模糊连接/asof合并/按不完全匹配的列连接
回复:关于浮点 EFT 值 Update() 函数的问题插件: 连接最近行 - 使用连续列和最近值连接表/ @jthi