Exploratory コミュニティ

指定した日付範囲にあるものを年度としてデータを生成する方法

#1

企業により決算時期が異なるため、2017-07-01から2018-06-30までを2017年度のように特定の日付範囲で年度を区切ることで業績をみたいことがあります。

42

そういった場合には、case_whenという条件によって異なる結果を返すことができる関数と
betweenという範囲を指定できる関数を組み合わせることで解決できます。

今回は、"2017-07-01"から"2018-06-30"までを2017年度、"2018-07-01"から"2019-06-30"までを2018年度としたいとします。

まず始めステップメニューから計算を作成を開きます。

次に、ダイアログが開くので、新しく列を作成にチェックをします。

列名はご自由にお選びください。

計算エディタには、下記のコードを入力します。
date となっている所には、現在お使いの日付型のデータの列名を指定してください。

case_when(
between(date, as.Date("2017-07-01"), as.Date("2018-06-30")) ~ "2017年度",
between(date, as.Date("2018-07-01"), as.Date("2019-06-30")) ~ "2018年度",
TRUE ~ "Other")

これにより、指定した日付から年度を生成できたかと思います。

このコードの説明をしますと、

case_whenは指定した条件に合致すると、条件が満たされた時の値を返してくれる関数です。

条件1 ~ 条件1が満たされたときの値,
条件2 ~ 条件2が満たされたときの値,
...
TRUE ~ どちらでもないときの値

次に、between は範囲を指定することができ、指定した範囲と一致する場合は、TRUEをそうでない場合はFALSEを返します。

引数は3つありまして、下記のようになっています。

between(範囲を指定したい列名, 最初の指定日、最後の指定日)

今回は日付型で使用していますが、数値型でも使うことができます。

次に、as.Dateですがこちらの関数は日付型に変換処理するための関数となります。
betweenの中で指定した "2017-07-01"といった値はcharacter型のため、Date型に変換しなければ期間の情報を与えることができないためです。

今回のように、case_whenbetweenを合わせることで、指定した範囲ならば2017年度といった形で返すことができます。

ぜひお試しください!

1 Like