更改日期格式你好,
我收到了一份 .xlsx 數據表,其中一列包含以下日期“dd.mm.yy”,即“03.10.14”。
將數據複製到 JMP 後,我創建了一個新列來獲取日期的數字,並將日期轉換為 1. 數字日期類型
2. 序數建模類型和
3. 格式為“yyyy-mm-dd”。
但是,某些日期“20.10.15”沒有出現在我的新專欄中。 定義有衝突嗎?
請告訴我如何克服這個問題。
回复:更改日期格式我看到完成轉換所需的步驟。
問題解決了。 謝謝你!回复:更改日期格式您的問題是您讀取的初始日期字段錯誤。初始日期字段的格式為“dd.mm.yy”,你是讀取它就好像它是“mm.dd.yy”。我已附上您的數據表,可以看出 numdate 值與您的 newdate 值不匹配。在數據表中,我創建了一個字符日期列,它在公式中使用 format() 函數來得出字符值。
回复:更改日期格式感謝您的詳細回复。
我處理了數據表並將“字符日期”轉換為數字日期,“numdate”列。 之後,我將數字日期轉換為我想要的格式,“newdate”列。 但是,由於某種原因,“日期”列中指定的某些日期不會顯示新日期。 為什麼它不採用某些日期,即 12.11.14 並將 numdate 值轉換為新格式?
我附上了一個包含數據的 jmp 表,以便您實際查看數據。 我希望這可以幫助解決這個問題。
預先感謝,馬克
<SPAN class="token function">Date DMY</SPAN><SPAN class="token punctuation">(</SPAN>
<SPAN class="token function">Num</SPAN><SPAN class="token punctuation">(</SPAN> <SPAN class="token function">Left</SPAN><SPAN class="token punctuation">(</SPAN> <SPAN class="token function">Char</SPAN><SPAN class="token punctuation">(</SPAN> <SPAN class="token punctuation">:</SPAN>Date <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">,</SPAN> <SPAN class="token number">2</SPAN> <SPAN class="token punctuation">)</SPAN> <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">,</SPAN>
<SPAN class="token function">Num</SPAN><SPAN class="token punctuation">(</SPAN> <SPAN class="token function">Substr</SPAN><SPAN class="token punctuation">(</SPAN> <SPAN class="token function">Char</SPAN><SPAN class="token punctuation">(</SPAN> <SPAN class="token punctuation">:</SPAN>Date <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">,</SPAN> <SPAN class="token number">4</SPAN><SPAN class="token punctuation">,</SPAN> <SPAN class="token number">2</SPAN> <SPAN class="token punctuation">)</SPAN> <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">,</SPAN>
<SPAN class="token function">Num</SPAN><SPAN class="token punctuation">(</SPAN> <SPAN class="token string">"20"</SPAN> <SPAN class="token operator">||</SPAN> <SPAN class="token function">Right</SPAN><SPAN class="token punctuation">(</SPAN> <SPAN class="token function">Char</SPAN><SPAN class="token punctuation">(</SPAN> <SPAN class="token punctuation">:</SPAN>Date <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">,</SPAN> <SPAN class="token number">2</SPAN> <SPAN class="token punctuation">)</SPAN> <SPAN class="token punctuation">)</SPAN>
<SPAN class="token punctuation">)</SPAN>
回复:更改日期格式在我看來,您的回答和問題表明您不了解 JMP 如何處理日期值。JMP 使用等於自 1904 年 1 月 1 日午夜以來的秒數的數值來處理日期和時間。JMP 將其轉換為 09Feb2015 或 02/09/2015 等顯示之一的方法是在具有數值的列上設置 JMP 格式。
因此,如果您有一個名為“日期”的字符列,其值類似於“25.04.15”,並且您希望將其轉換為 JMP 日期值,則可以創建一個新列,並應用以下公式:
Date DMY(
Num( Left( Char( :Date ), 2 ) ),
Num( Substr( Char( :Date ), 4, 2 ) ),
Num( "20" || Right( Char( :Date ), 2 ) )
)
它將採用字符值“2015 年 4 月 25 日”並將其轉換為3512764800 。這是從 1904 年 1 月 1 日午夜到 2015 年 4 月 25 日午夜的秒數。現在缺少的是,您不希望以秒數顯示數據。您想要的是將值顯示在數據表中以及 2015 年 4 月 25 日的報告中。為此,您只需將列的格式設置為“yyyy-mm-dd”。以這種數字形式存儲日期的優點是可以按日期對數據進行排序,並且可以對值進行加法和減法,甚至可以計算平均日期等。
下面是一個小腳本,當您運行它時,它將創建一個包含單個字符列的數據表,其結構為 dd.mm.yy。然後,該腳本創建一個數字 JMP 日期列,將顯示結構更改為 yyyy-mm-dd。 然後,該條帶繼續創建一個字符列,該字符列將字符日期列值操作為結構“yyy-mm-dd”的新字符串。
Names Default To Here( 1 );
// Create a beginning data table
dt = New Table( "Dates",
New Column( "Date",
Character,
ordinal,
Values( {"25.04.15", "22.09.15", "03.11.15"} )
)
);
// Create a new numeric column that contains a JMP date value
// and tell JMP to format the numeric value using a
// yyy-mm-dd structure
dt << New Column( "Numeric Date",
formula(
Date DMY(
Num( Left( Char( :Date ), 2 ) ),
Num( Substr( Char( :Date ), 4, 2 ) ),
Num( "20" || Right( Char( :Date ), 2 ) )
)
),
format("yyyy-mm-dd")
);
// Create a new character column that rearanges the data from
// from the character column "Date"
dt << New Column( "Character Date",
character,
formula(
"20" || Right( Char( :Date ), 2 ) || "-" ||
Substr( Char( :Date ), 4, 2 ) || "-" || Left( Char( :Date ), 2 )
)
);回复:更改日期格式

回复:更改日期格式1.原始日期欄:charater、ordinal
2.年月日
在不進一步研究更改字符列的情況下,我相信公式會自動將其格式化為字符,因為我無法在沒有再次空的新列的情況下更改為另一種數據類型/建模類型。
回复:更改日期格式我確信可以輸出這樣的字符日期結構。我有一些問題。
- 原始列的格式是什麼?
- 數字/字符
- 如果是字符,它的結構是什麼,20JUL2019 或 07/20/2019,還是什麼?
- 為什麼需要新列是字符列?
回复:更改日期格式吉姆,
還有一點是次要但重要的一點,當使用數據類型“char”時,是否有可能無法獲得像 yyyy-mm-dd 這樣的數字輸出日期? 我嘗試建立另一列以從帶有字符日期的新列更改為上面提到的輸出,但我無法創建它。
如果您有其他解決方案,請告訴我!
謝謝你,
馬克
回复:更改日期格式嗨吉姆,
有效! 謝謝你! 我唯一要做的就是從配方中刪除 DMY!
驚人的。
再次感謝你,
馬克
回复:更改日期格式這是一種執行您需要的操作的簡單方法,可確保為日、月和年選擇輸入列的正確部分。
輸入您的數據
創建一個新的數字列,並在列信息中指定使用您想要的日期格式
在列中使用以下公式將原始列中的數據轉換為 JMP 數字日期列。
Date DMY(
Num( Left( Char( :yourcolname ), 2 ) ),
Num( Substr( Char( :yourcolname ), 4, 2 ) ),
Num( "20" || Right( Char( :yourcolname ), 2 ) )
)
回复:更改日期格式嗨吉姆,
我從來沒有想過可以直接在 JMP 中打開 xlsx 文件,我嘗試過但無法打開它。
“日期”列是字符/序數。 在新列中,我將其更改為數字/序數並格式化為 yyyy-mm-dd。 更改為數字會產生數值,然後我將其格式化為 yyyy-mm-dd。
我需要做什麼才能將 JMP 更改為字符串 = 月份值?
感謝您的支持,
馬克
回复:更改日期格式我有一些疑問:
- 如何將 xlsx 數據導入 JMP?你說“複製後”。這是複制並粘貼到新的 JMP 數據表中嗎?您是否嘗試過僅使用 File==>Open,然後指向 xlsx 文件並以這種方式打開它?
- 將數據“複製”到 JMP 後,其中包含“03.10.14”數據的列的數據類型是什麼?
- 假設“03.10.14”數據的數據類型為字符,您在新列中使用哪些步驟將其轉換為數字數據類型?
我懷疑您對“20.10.15”值的問題是,JMP 認為字符串中的第一個值是月份值,而不是日期值。