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(),这很有趣。公式如下
- 信息格式(
字符(格式(:日期,“mm/dd/yyyy”))|| “” ||
Char( 小时( :Time, 24 ) ) || “:” ||字符(分钟(:时间))||
“:” || Char( 60 + Second( :Time ) ),
“mm/dd/yyyy HH:mm:ss”
)
然而,这两种解决方案似乎都有些费力(除了将导入 JMP 的 excel 保存为 CSV,然后再次使用 JMP 打开)。 还有另一种方法可以更快地更正时间值吗? 自动化?在将 excel 文件导入 JMP 时?
数据访问回复:xls 或 xlsx、csv 和 JMP 中的时间值如果您看到某个持续时间有一些负值,或者一个日期值作为双精度导入 JMP 并重新转换为时间,这可能是因为 Excel 和 JMP 使用不同的参考日期来表示它们的日期/时间值状态。Excel 使用 1/1/1900,而 JMP 使用 1/1/1904。这里有关于社区帖子的一些信息:
https://community.jmp.com/t5/JMPer-Cable/Using-dates-times-datetimes-and-durations-in-JMP/ba-p/68689
布赖恩·科科伦
JMP开发
回复:xls 或 xlsx、csv 和 JMP 中的时间值我已经复制了你的发现。JMP 13-16 均以相同的负值读入 Excel 值。我查看了 Excel 电子表格,找不到负值的任何原因,但话又说回来,我不是 Excel 专家。
也许其他成员有想法?
回复:xls 或 xlsx、csv 和 JMP 中的时间值关于多excel导入,我用的是前段时间别人分享的一个脚本。 附于此。
回复: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( "-" )
)
)
如果我将我的时间格式更改为“最佳”,它会显示负值。 我把它附在这里了。
回复: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 中的时间值请忽略原始帖子中附带的那个,并以此为例。 谢谢你抓住那个。
回复:xls 或 xlsx、csv 和 JMP 中的时间值您确定您附加的 Excel 文件是正确的吗?该工作簿包含有关内部会议信息的文件。
回复:xls 或 xlsx、csv 和 JMP 中的时间值更正:
以下是我对正在发生的事情以及我如何得出导致所需日期时间格式的两个解决方案的想法的注释。
1.将日期和时间转换为字符串,然后连接两列。 复制属性,粘贴到新列中,然后将格式更改回数字。 但这并不总是有效!
2. Second() 函数提取负值……而且只提取 Second(),这很有趣。公式如下
信息格式(
字符(格式(:日期,“mm/dd/yyyy”))|| “” ||
Char( 小时( :Time, 24 ) ) || “:”||字符(分钟(:时间))||
“:”|| Char( 60 + Second( :Time ) ),
“mm/dd/yyyy HH:mm:ss”
)