帮忙做表转换和转换时间戳?所以我从传感器获得了一个数据表,我不太确定如何正确格式化。 它是一个输出电压读数的光传感器。
表中的第一列是测量的波长,然后针对每个测量数据的时间实例有 100 多列。
我该如何正确地转变或调整这一点? 仅表转置是正确的活动吗?
接下来,有关如何将原始时间戳转换为可用时间序列的建议? 它看起来像这样。
DD-MM-YYYYTHH:MM:SS.###Z
我该怎么做才能将其转换为可用的时间序列值以绘制为 x 轴? 精确到千分之一秒,增量为 0.1 秒。
另外,如何找到最小值和最大值并将时间标准化为 0-->max?
...
14-07-2020T22:47:31.400Z
14-07-2020T22:47:31.500Z
14-07-2020T22:47:31.600Z
14-07-2020T22:47:31.700Z
14-07-2020T22:47:31.800Z
14-07-2020T22:47:31.900Z
...
数据混合和清理回复:帮忙做一个表转换和转换时间戳?谢谢杰夫。 您对最终方程的输入非常好,消除了对跨越午夜跑步的担忧。
回复:帮忙做一个表转换和转换时间戳?
@aliegner1写道:
关于时间戳的问题:如何将其转换为原始持续时间? 我看到有“日期差异”公式,但看起来它需要两列。 我如何使它成为一个从 0.000s --> max time 开始的时间序列?
在我们进一步讨论之前,我认为我们需要先澄清这个问题。@tx尼尔森将其解释为您想要删除日期时间值的日期部分。 我不认为这就是你想要的。
您现在已经有一列日期时间值。 该列可以用作时间序列,只是不会从 0 开始。
相反,如果您希望使用一列来计算数据表中连续行之间的时间差,则可以通过简单的减法轻松完成行下标。

我在这里有几点需要指出:
- 第一行中的值设置为 0。
- 我不需要使用 Date Difference() 函数,因为我对以秒为单位的值感兴趣。 所以,简单的减法就可以了。
- 因为浮点运算这些值的差异并不精确到十分之一秒。 我已将此列格式化为以十分之一秒显示,即带有 1 位小数的固定十进制。
- 最后,但也许更复杂的是,你最初的问题说你有多个波长。 您想为每个波长在 0 处重新启动此时间序列吗? 如果是这样,那就不是问题了。 只需对公式进行一些更改即可。

- 现在公式检查第 1 行或者使 lambda 值与之前的 lambda 不同(使用Lag() 函数) 将序列设置为 0。
- 它还使用 Lag() 获取前一行中的序列值,并添加当前行和前一行之间的时间值差。
我希望这有助于澄清并提供一个好的方向。
回复:帮忙做一个表转换和转换时间戳?鉴于您提出的问题,我的第一反应是您需要做一些阅读。您需要阅读发现 JMP 和使用 JMP 文档。两者均可在 JMP 文档库的“帮助”下拉菜单中找到。
关于日期溢出问题......您需要做的是检查 Date Difference() 是否大于 0 天,如果不大于 0 天,则根据需要计算时间。
Lamda 不必更改为角色。但可以通过更改数据类型轻松完成此操作。或者您可以简单地将建模类型更改为序数或名义。
:Lamda << Data Type(character);
// or
:Lamda<<MODELING type=""></MODELING>
回复:帮忙做一个表转换和转换时间戳?太棒了吉姆!
提几个问题看看你的想法:
- 如何防止跑步从午夜持续到第二天?使用一天中的时间来获取绝对时间或将其标准化为从零开始将受到跨越 2 天的运行的影响。
- 关于将 Lambda col 转换为字符列的想法? 它本质上是一个标签,所以它不应该是数字,对吗? 它在几个波长 t 下进行测量,然后绘制数据与时间的关系图。
- 如何将原始文件嵌入到新创建的数据表中? 我将最初的 dt = --> 更改为文件打开对话框。

回复:帮忙做一个表转换和转换时间戳?这是一个小脚本,可以帮助您将数据转换为分析格式。 它采用您的示例数据表并创建:

names default to here(1);
dt=current data table();
// Get the column names from the data table
colNames = dt << get column names;
// Remove Lamda from the list
remove from(colNames,1,1);
// Stack the data
dtStack = dt << Stack(
columns(
colNames
),
Source Label Column( "Label" ),
Stacked Data Column( "Data" ),
Output Table( "Stacked" )
);
// Create a new JMP DateTime column
dtStack << New Column( "Timestamp",
Numeric,
"Continuous",
Format( "d/m/y h:m:s", 26, 3 ),
Input Format( "d/m/y h:m:s", 0 ),
Formula( Informat( Word( 1, :Label, "Z" ), "d/m/y h:m:s" ) )
);
// Remove formula to convert column to static values
dtStack:Timestamp << delete formula;
// Create the Time variable
dtstack << New Column( "Time",
Numeric,
"Continuous",
Format( "hr:m:s", 17, 3 ),
Input Format( "hr:m:s", 0 ),
Formula( Time Of Day( :Timestamp ) )
);
// Get rid of no longer needed "Label" column
dtStack << delete columns( "Label" );
回复:帮忙做一个表转换和转换时间戳?请参阅附加子集(预堆叠)。
我获取了一天中的时间,但随后需要防范午夜跑步和日期变化时的情况? 我通过执行 [time of day() - col minus(time of day()) 将其归零
回复:帮忙做一个表转换和转换时间戳?要将时间戳 (JMP 日期/时间) 列转换为时间值,请使用 Time of Day() 函数。 它有效地返回从前一个午夜到测量时间的秒数。
关于当列名每天都在变化时的堆叠……获取数据表中的列列表,然后将该列表应用到 Stack Platform 语句中是一件简单的事情。 传递到数据表以检索列名称的消息是 dt << get column names()。
是否可以附上您的数据的示例数据表或电子表格。 查看输入数据的细节非常困难,这可能会导致传递虚假的方向。回复:帮忙做一个表转换和转换时间戳?谢谢吉姆和杰夫,他们工作得很好! 我现在正在阅读 word() 。
关于时间戳的问题:如何将其转换为原始持续时间? 我看到有“日期差异”公式,但看起来它需要两列。 我如何使它成为一个从 0.000s --> max time 开始的时间序列?
关于编写堆栈命令脚本的问题:查看脚本,它的每一列都有一个唯一的行......如何在下次拉取此数据文件时使其动态化?
Data Table( "Sheet1" ) << Stack(
columns(
:Name( "14-07-2020T22:47:31.400Z" ),
:Name( "14-07-2020T22:47:31.500Z" ),
:Name( "14-07-2020T22:47:31.600Z" ),
....for every column...
),
Source Label Column( "TimeStamp" ),
Stacked Data Column( "data" ),
Output Table( "sensor table" )
)
回复:帮忙做一个表转换和转换时间戳?杰夫,
我想我的年龄已经暴露了……你再次让我知道了答案。
回复:帮忙做一个表转换和转换时间戳?关于您的数据,我建议您研究一下堆叠列。该表格将为您提供更多 JMP 分析工具。
关于您的时间戳问题......这是一个示例脚本,它采用名为“TS”的输入列并将其转换为 JMP 日期/时间列。
Names default to here(1);
dt = New Table( "Example",
Add Rows( 6 ),
New Column( "TS",
Character,
"Nominal",
Set Values(
{"14-07-2020T22:47:31.400Z", "14-07-2020T22:47:31.500Z",
"14-07-2020T22:47:31.600Z", "14-07-2020T22:47:31.700Z",
"14-07-2020T22:47:31.800Z", "14-07-2020T22:47:31.900Z"}
)
)
);
dt << New Column( "Column 2",
Numeric,
"Continuous",
Format( "d/m/y h:m:s", 26, 3 ),
Input Format( "d/m/y h:m:s", 0 ),
Formula( Informat( Word( 1, :TS, "Z" ), "d/m/y h:m:s" ) )
);回复:帮忙做一个表转换和转换时间戳?我想你所需要的只是表->堆栈将时间列放入堆栈列角色中。
您最终应该有两列:波长和时间。
至于将时间戳转换为 JMP 日期时间列,单词()和信息()我去这里吗:

进一步阅读:
如果您只学习一种公式编辑器函数,Word() 就是其中之一
在 JMP 中使用日期、时间、日期时间和持续时间