xls 或 xlsx、csv 和 JMP 中的时间值大家好,我的 excel 中的时间值有一个奇怪的问题。 我有一些数据(示例作为 excel 文件附在此处),时间列对我很感兴趣,我会将日期和时间列添加在一起以创建日期时间列。 为了分析数据,我使用 JMP,因此我正在导入 excel 文件。
然而,我遇到了一些奇怪的事情:
1.当我导入多个文件(来自客户为他们分析他们的数据)时,时间值(以秒为单位)为负数,从1899年开始,当我将格式更改为mm:dd:yyyy hh:mm :ss。 当我再次将文件保存为 CSV,然后再次使用 JMP 打开时,时间值是正确的(如原始 excel 文件中所列)。
2.当我将excel文件的格式更改为CSV时,一旦导入JMP,时间值是正确的。 对于 xls 或 xlsx 文件,我需要将它们更改为 CSV。 这是为什么?
以下是我对正在发生的事情以及我如何得出导致所需日期时间格式的两种解决方案的想法的笔记。
正如您将在“可怕的公式”专栏中看到的那样,我不得不做一些事情来解决:
- 将日期和时间转换为字符串,然后连接两列。 复制属性,粘贴到新列中,然后将格式改回数字。 但这并不总是有效!
- Second() 函数提取负值……而且只有 Second(),这很有趣。公式如下
- 信息(
Char( 格式( :Date, "mm/dd/yyyy" ) ) || " " ||
Char( Hour( :Time, 24 ) ) || ":" ||字符(分钟(:时间))||
":" || Char( 60 + Second( :Time ) ),
"mm/dd/yyyy HH:mm:ss"
)
但是,这两种解决方案似乎都有些费力(除了将导入 JMP 的 excel 保存为 CSV,然后再次使用 JMP 打开)。 还有另一种方法可以更快地更正时间值吗? 自动化?将 excel 文件导入 JMP 时?
分析数据表脚本编写回复:xls 或 xlsx、csv 和 JMP 中的时间值更正:
以下是我对正在发生的事情以及我如何得出导致所需日期时间格式的两种解决方案的想法的笔记。
1. 将日期和时间转换为字符串,然后将两列连接起来。 复制属性,粘贴到新列中,然后将格式改回数字。 但这并不总是有效!
2. Second() 函数提取负值……而且只有 Second(),这很有趣。公式如下
信息(
Char( 格式( :Date, "mm/dd/yyyy" ) ) || " " ||
Char( Hour( :Time, 24 ) ) || ":" ||字符(分钟(:时间))||
":" || Char( 60 + Second( :Time ) ),
"mm/dd/yyyy HH:mm:ss"
)
回复:xls 或 xlsx、csv 和 JMP 中的时间值您确定您附加的 Excel 文件是正确的吗?该工作簿包含有关内部会议信息的文件。
回复:xls 或 xlsx、csv 和 JMP 中的时间值请忽略原始帖子中所附的那个,并以此为例。 谢谢你抓住那个。
回复:xls 或 xlsx、csv 和 JMP 中的时间值我直接在 JMP 中打开 Excel 文件,我使用向导指示数据标题在第 6 行,数据从第 7 行开始。它生成了以下 JSL
Open(
"$DOCUMENTS/Discussion Group/Time_issue_7Sep (2).xlsx",
Worksheets( "W-A20122_Halexistar_20210820-12" ),
Use for all sheets( 1 ),
Concatenate Worksheets( 0 ),
Create Concatenation Column( 0 ),
Worksheet Settings(
1,
Has Column Headers( 1 ),
Number of Rows in Headers( 1 ),
Headers Start on Row( 6 ),
Data Starts on Row( 7 ),
Data Starts on Column( 1 ),
Data Ends on Row( 0 ),
Data Ends on Column( 0 ),
Replicated Spanned Rows( 1 ),
Replicated Spanned Headers( 0 ),
Suppress Hidden Rows( 1 ),
Suppress Hidden Columns( 1 ),
Suppress Empty Columns( 1 ),
Treat as Hierarchy( 0 ),
Multiple Series Stack( 0 ),
Import Cell Colors( 0 ),
Limit Column Detect( 0 ),
Column Separator String( "-" ),
Column Numeric Format(
Index( 2 ),
Column Name( Variable 1 ),
Format( "Best", 9 )
),
Column Numeric Format(
Index( 3 ),
Column Name( Variable 2 ),
Format( "Best", 9 )
)
)
)
日期和时间字段都被读入为正确的日期和时间 JMP 值。然后我所要做的就是跑
Names Default To Here( 1 );
dt = Current Data Table();
For Each Row( :Date = :Date + :time );
导入多个文件似乎无法处理行偏移以正确读取第 6 行的标题和第 7 行的数据;
我建议您创建自己的 JSL 循环以使用上述输入代码读取每个文件。
回复:xls 或 xlsx、csv 和 JMP 中的时间值这是非常感兴趣的。 我使用向导打开,但源脚本与您的不同。
Open(
"C:\Users\liew-6\OneDrive - Mettler Toledo LLC\Desktop\JMP\Time_issue_7Sep.xlsx",
Worksheets( "W-A20122_Halexistar_20210820-12" ),
Use for all sheets( 1 ),
Concatenate Worksheets( 0 ),
Create Concatenation Column( 0 ),
Worksheet Settings(
1,
Has Column Headers( 1 ),
Number of Rows in Headers( 1 ),
Headers Start on Row( 6 ),
Data Starts on Row( 7 ),
Data Starts on Column( 1 ),
Data Ends on Row( 0 ),
Data Ends on Column( 0 ),
Replicated Spanned Rows( 1 ),
Replicated Spanned Headers( 0 ),
Suppress Hidden Rows( 1 ),
Suppress Hidden Columns( 1 ),
Suppress Empty Columns( 1 ),
Treat as Hierarchy( 0 ),
Multiple Series Stack( 0 ),
Import Cell Colors( 0 ),
Limit Column Detect( 0 ),
Column Separator String( "-" )
)
)
如果我将时间格式更改为“最佳”,则会显示负值。 我已将其附在此处。