生年月日から年齢を計算する方法

例えば、小売店を営んでいて、お客様の年齢と売上には関係はあるのか調べたいとします。しかし、生年月日のデータしかないため、生年月日から年齢を算出したいです。

image

そのような場合には、下記のスクリプトを使用すると年齢を算出することができます。

floor(as.numeric(today() - Birthday) / 365)

列ヘッダーメニューから計算を作成(Mutate)を選択します。

image

次に、先ほどのスクリプトを入力して実行します。

※Birthdayの部分は、生年月日が入力されている列名を入力します。

image

計算している内容としては、
今日の日付から生年月日を引くことで、生年月日からの経過日数の値を得るため、その値を1年間の日数である365で割って出た値を小数点以下で切り捨てしています。

todayは今日の日付を返してくれる関数です。そのため、today() - Birthdayを行うことで、生年月日から何日経過しているかという値を返すことができます。

つぎに、as.numericは数値型に変換する関数となっています。as.numericがないと、difftimeという日付の差を表すデータタイプになってしまうのですが、チャートやアナリティクスで活用したいときには数値型の方が都合がいいために、数値型に変換します。そのため、数値型に変換した生年月日からの経過日数を1年の日数である365日で割ることで、大体の年齢を算出することができます。
最後に、小数部分を切り捨てるためにfloor関数を使用して、値を整数のみにしています。

「いいね!」 1

指定した年月日での年齢を計算するとき、指定する日はどのように関数として記載すればよいですか?

today() の代わりに、as.Date(“2024-01-01”) のような形で日付を設定してあげれば良いと思います!

「いいね!」 1

なるほど!ありがとうございます!!:laughing::+1:

「いいね!」 1

お答えいただきありがとうございますー!

as.Dateでも良いですし、ymd(“yyyy-mm-dd”)でも大丈夫です!

最近のマイブームは、例えば

%E3%82%AD%E3%83%A3%E3%83%97%E3%83%81%E3%83%A3

というパラメータを作って、
mutate側の基準日付に当たるところを ymd(@{base_date}) とすると、
その基準日付を変更する際にパラメータだけを変更すればよいので便利です。

「いいね!」 2

パラメータを導入するというのは、いいですね。対象とする日付が検討する内容によって変化する場合に使いやすくなるかも。

「いいね!」 1

はい、複数のステップや複数のカラムで計算するなどの場合に、変更する箇所が1箇所だけで済むのでとてもメンテナンス性が高まります。

「いいね!」 1