xlsまたはxlsx、csv、およびJMPの時間値みなさん、こんにちは。Excelの時間値に奇妙な問題があります。 私はいくつかのデータを持っています(例はここにExcelファイルとして添付されています)、時間列は私にとって興味があり、日付と時間の列を一緒に追加して日付と時間の列を作成します。 データを分析するために、私はJMPを使用しているので、Excelファイルをインポートしています。
しかし、私はいくつかの奇妙なことに遭遇しました:
1.複数のファイルを(顧客からデータを分析するために)インポートすると、時間値(秒単位)は負になり、形式をmm:dd:yyyy hh:mmに変更した1899年から始まります。 :NS。 ファイルをCSVとして再度保存し、JMPで再度開くと、時間の値は正しいです(元のExcelファイルにリストされているとおり)。
2. Excelファイルの形式をCSVに変更すると、JMPにインポートされると時刻の値が正しくなります。 xlsまたはxlsxのファイルの場合、CSVに変更する必要があります。 何故ですか?
以下は、何が起こっているのか、そしてどのようにして2つの解決策にたどり着いたのかについての私の考えのメモです。
「TerribleFormula」の列にあるように、回避策としていくつかのことをしなければなりませんでした。
- 日付と時刻を文字列に変換してから、両方の列を連結します。 プロパティをコピーし、新しい列に貼り付けてから、形式を数値に戻します。 しかし、これは常に機能するとは限りません。
- Second()関数は負の値を抽出しました…そしてSecond()だけが興味深いものでした。式は以下のとおりです
- Informat(
Char(Format(:Date、 "mm / dd / yyyy"))|| "" ||
Char(Hour(:Time、24))|| ":" || Char(Minute(:Time))||
":" || Char(60 + Second(:Time))、
"mm / dd / yyyy HH:mm:ss"
)
ただし、どちらのソリューションも少し面倒なようです(JMPにインポートされたExcelをCSVとして保存してから、JMPで再度開く以外に)。 時間値をより速く修正する別の方法はありますか? 自動化? ExcelファイルをJMPにインポートしている間?
分析データ表スクリプティングRe:xlsまたはxlsx、csv、およびJMPの時間値修正:
以下は、何が起こっているのか、そしてどのようにして2つの解決策にたどり着いたのかについての私の考えのメモです。
1.日付と時刻を文字列に変換してから、両方の列を連結します。 プロパティをコピーし、新しい列に貼り付けてから、形式を数値に戻します。 しかし、これは常に機能するとは限りません。
2. Second()関数は負の値を抽出しました…そしてSecond()だけが興味深いものでした。式は以下のとおりです
Informat(
Char(Format(:Date、 "mm / dd / yyyy"))|| "" ||
Char(Hour(:Time、24))|| ":" || Char(Minute(:Time))||
":" || Char(60 + Second(:Time))、
"mm / dd / yyyy HH:mm:ss"
)
Re:xlsまたはxlsx、csv、およびJMPの時間値添付したExcelファイルが正しいものであると確信していますか?ワークブックには、内部会議に関する情報を含むファイルが含まれています。
Re:xlsまたはxlsx、csv、およびJMPの時間値元の投稿に添付されているものは無視して、例として使用してください。 それをキャッチしていただきありがとうございます。
Re:xlsまたはxlsx、csv、およびJMPの時間値Excelファイルを直接JMPで開き、ウィザードを使用して、データ見出しが行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ループを作成することをお勧めします。
Re: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( "-" )
)
)
また、時間の形式を「最高」に変更すると、負の値が表示されます。 ここに添付しました。