列式月()複数の日付と時刻を含むデータテーブルがあります。 すべての日付を月だけ、場合によっては月年形式に変更しようとしています。
これは、recode を使用して数値を 1 月から 12 月に変更するのではなく、数式に移動する列を選択して Month(DateandTime) をまとめることによって以前に行ったことがあることを知っています。
今日試してみると、Month() 式によって日付が単なるドットに変更されます。 他の投稿を見ましたが、この式は私が使用していると思われるものです。 期待した結果が得られない理由がわかりません。
Re: 列式月()100万ありがとう:)
Re: 列式月()これが機能する式です
Substr( Format( :Date, "Monddyyyy" ), 1, 3 ) || " " || Char( Year( :Date ) )
Re: 列式月()こんにちは皆さん、
このフォーラムで提供される多くのヘルプを利用することができます。 添付の表に関するヘルプを探しています。 列 2 には、2019 年と 2020 年の月が含まれています。 月の隣に年を追加する必要があります。
Re: 列式月()If(:month <= 2 | :month >=12,
season="Winter",
:month <=5, season="Spring",
:month <=8, season="Summer",
season="Fall"
); Re: 列式月()月から季節列を作成したい場合はどうすればよいですか?
@ジュリアン書きました:
こんにちは@herrera5238 、
Substr() は、文字列の一部を抽出できる非常に便利な文字関数です。 Substr() の引数は、[ヘルプ] > [スクリプト インデックス] に表示されます。
Substr(string, start, length)
したがって、例の 1 と 3 は、文字列を取得し、文字列の最初の序数位置から始まる 3 文字を返すように Substr() に指示します。これが機能する理由は、私が書いた式の残りの部分が
Format( :Date Time, "Monddyyyy" )
指定されたフォーマット (「Monddyyyy」) に基づいてフォーマットされた日付を返します。 Substr() を使用せずにその関数だけを使用すると、 "Jan012018" のような値を含む行が取得されます。
省略しない月を希望する場合は、別のことを行う必要があります。 次のように始めることができます。
Format( :Date Time, "Date Long" )
これは、月曜日、2018 年 1 月 1 日のようなものを返します。 Substr() では特定の開始位置と文字数を指定する必要があるため、曜日が異なるため、この文字列を分離することはあまり役に立ちません。文字数。 ただし、他にも多くの文字関数を自由に使用できます。 Word() は素晴らしいものです -- これは、何らかの区切り文字に基づいて文字列内の特定の単語を返します (デフォルトはスペースですが、カンマ、またはカンマとスペースの両方を使用することもできます。これが必要です)。 これを知っていると、次の式を使用できます。
Word( 2, Format( :Date Time, "Date Long" ), ", " )
これを読み取る方法は次のとおりです。書式設定された日付時刻列 (Date Long を使用) から 2 番目の単語 (つまり 2) を取得し、単語の区切り文字としてコンマとスペースの両方を使用します (引用符内にあることに注意してください)カンマ、次にスペース -- これが、JMP に両方を使用するように指示する方法です)。 これにより、データセットの最初の行に「1 月」が返されます。
しかし、おそらく、終わりや始まりに年を入れたり、間に文字を入れたりしたいと思うかもしれません。 これらはすべて、連結演算子 || または関数 Concat() を使用して行うことができます。 たとえば、各行の文字列の末尾に年を置きたいとします。 何らかの方法で年を取得する必要があります (:Date Time を指す Year() 関数を使用することも、再度 Words() を使用することもできます。どちらも機能します)。 これを行う 1 つの方法は次のとおりです。
Word( 2, Format( :Date Time, "Date Long" ), ", " ) || "-" ||
Char( Year( :Date Time ) )
これは「2018 年 1 月」を返します。 ここで私がやったことが 1 つありますが、皆さんが予想しないかもしれません。 包みました年Char() 関数内の ( :Date Time )。 これは重要な理由です。年( :Date Time ) は年の数値を返します。Concat() 関数 (またはそのインライン演算子バージョン ||) には文字引数が必要です。 したがって、単純な Char() を Year() の周囲に追加すると、Concat() が操作する年の文字表現を確実に取得できるようになります。
文字関数を使用してできることはたくさんあります。[ヘルプ] > [スクリプト インデックス] にある数式リファレンスの「文字」セクションを確認することをお勧めします。
これがお役に立てば幸いです!
@ジュリアン
Re: 列式月()@herrera5238
私強くScripting Index についてよく理解しておくことをお勧めします。
ヘルプ==>スクリプトインデックス
Julian および/または私がこの議論で示したすべての関数は索引にリストされ、索引で定義され、例は索引に示されています。
Re: 列式月()こんにちは@herrera5238 、
Substr() は、文字列の一部を抽出できる非常に便利な文字関数です。 Substr() の引数は、[ヘルプ] > [スクリプト インデックス] に表示されます。
Substr(string, start, length)
したがって、例の 1 と 3 は、文字列を取得し、文字列の最初の序数位置から始まる 3 文字を返すように Substr() に指示します。これが機能する理由は、私が書いた式の残りの部分が
Format( :Date Time, "Monddyyyy" )
指定された形式 (「Monddyyyy」) に基づいて形式化された日付を返します。 Substr() を使用せずにその関数だけを使用すると、 "Jan012018" のような値を含む行が取得されます。
省略しない月を希望する場合は、別のことを行う必要があります。 次のように始めることができます。
Format( :Date Time, "Date Long" )
これは、月曜日、2018 年 1 月 1 日のようなものを返します。 Substr() では特定の開始位置と文字数を指定する必要があるため、曜日が異なるため、この文字列を分離することはあまり役に立ちません。文字数。 ただし、他にも多くの文字関数を自由に使用できます。 Word() は素晴らしいものです -- これは、何らかの区切り文字に基づいて文字列内の特定の単語を返します (デフォルトはスペースですが、カンマ、またはカンマとスペースの両方を使用することもできます。これが必要です)。 これを知っていると、次の式を使用できます。
Word( 2, Format( :Date Time, "Date Long" ), ", " )
これを読み取る方法は次のとおりです。書式設定された日付時刻列 (Date Long を使用) から 2 番目の単語 (つまり 2) を取得し、単語の区切り文字としてコンマとスペースの両方を使用します (引用符内にあることに注意してください)カンマ、次にスペース -- これが、JMP に両方を使用するように指示する方法です)。 これにより、データセットの最初の行に「1 月」が返されます。
しかし、おそらく、終わりや始まりに年を入れたり、間に文字を入れたりしたいと思うかもしれません。 これらはすべて、連結演算子 || または関数 Concat() を使用して行うことができます。 たとえば、各行の文字列の末尾に年を置きたいとします。 何らかの方法で年を取得する必要があります (:Date Time を指す Year() 関数を使用することも、再度 Words() を使用することもできます。どちらも機能します)。 これを行う 1 つの方法は次のとおりです。
Word( 2, Format( :Date Time, "Date Long" ), ", " ) || "-" ||
Char( Year( :Date Time ) )
これは「2018 年 1 月」を返します。 ここで私がやったことが 1 つありますが、皆さんが予想しないかもしれません。 包みました年Char() 関数内の ( :Date Time )。 これは重要な理由です。年( :Date Time ) は年の数値を返します。Concat() 関数 (またはそのインライン演算子バージョン ||) には文字引数が必要です。 したがって、単純な Char() を Year() の周囲に追加すると、Concat() が操作する年の文字表現を確実に取得できるようになります。
文字関数を使用してできることはたくさんあります。[ヘルプ] > [スクリプト インデックス] にある数式リファレンスの「文字」セクションを確認することをお勧めします。
これがお役に立てば幸いです!
@ジュリアン
Re: 列式月()ジュリアン、
この式の 1 と 3 は何をしているのでしょうか?
年を省略または省略したくない場合はどうすればよいですか?つまり、18 年 1 月または 2018 年 1 月です。
利用可能な書式設定オプションを参照できる場所はありますか?
形式を含めて数式を記述することで、余分な再コーディング手順を省略できます。
ヒントをありがとう!!
Re: 列式月()ジム、
私はまだ動作していないと言う準備をしていて、スクリーンショットを準備しました。

何が問題なのか理解できました。 参照していた同じ列の数式を使用しようとしていました。
私がすべきだったのは、新しい列を作成してここに数式を追加することでした。
それを実行したら、問題はなくなりました。
助けてくれたことに感謝していますが、とても単純なことを見逃していたのでとても残念に思います。
Re: 列式月()ファイルを添付していただきありがとうございます。
添付していただいたデータテーブルに数式を適用するのに問題はありませんでした。
私が当てはめた式は
Month( :Date Time )
Date Time 列が適切な JMP datetime 列であることを考えると、「:Date Time」ではなく「Date Time」を指定しているというスコープの問題があるのではないかと思います。列名の前にコロンを置き、Date Time という名前のメモリ変数ではなく、Date Time という名前の列を使用するように JMP に指示します。

Re: 列式月()こんにちは@herrera5238 、
データセットでは、次の式を使用するとうまくいくようです。
Month( :Date Time )
また、月の番号を月の略称に変更するようにコーディングする場合は、次の式を直接使用できます。
Substr( Format( :Date Time, "Monddyyyy" ), 1, 3 )
これらの列の式を含むサンプル データ テーブルをここに添付しました。
@ジュリアン
Re: 列式月()こんにちは、ジムさん
データ表を添付しました。 こちらも別の投稿で見つけた商品です。 そこでコラム情報を調べてみました。データ型は数値であると表示されます。 このデータを Excel からインポートしていますが、これは問題ではないでしょうか? 前回作業したときはこの問題が発生した覚えはありませんが、前回は 13 ではなく JMP12 を使用していたと思います。
Re: 列式月()問題は、Month() 関数で参照している列が JMP の日付または日時の値ではないことだと思います。参照されている列が数値ではなく文字列列である可能性はありますか?
作業中のデータテーブルのサンプルを添付していただければ助かります。