web-dev-qa-db-ja.com

潤滑油との年の時差?

lubridateを使用して、生年月日と今日の日付から年数を計算します。今私はこれを持っています:

library(lubridate)
today<-mdy(08312015)
dob<-mdy(09071982)
today-dob

それは私に彼らの年齢を日で与えます。

13
Ignacio

これは私が取るlubridateアプローチです:

interval(dob, today) / years(1)

32年の答えを出します。

関数は、年の残りの部分を表現できないと不平を言うことに注意してください。これは、年が固定された概念ではないためです。つまり、うるう年では366、非うるう年では365です。週数と日数に関して、より詳細な回答を得ることができます。

interval_period = interval(dob, today)
full_year = interval_period %/% years(1)
remaining_weeks = interval_period %% years(1) %/% weeks(1)
remaining_days = interval_period %% years(1) %% weeks(1) %/% days(1)
sprintf('Your age is %d years, %d weeks and %d days', full_year, remaining_weeks, remaining_days)
# [1] "Your age is 32 years, 51 weeks and 1 days"

%/%を除算に使用し、%%を剰余として使用して、年/週全体を差し引いた残りの週/日を取得することに注意してください。

17
Paul Hiemstra
as.duration(interval(dob,today)) %/% as.duration(years(1))

エラーなしでジョブを実行する必要があります。

5
Shota Shimizu
as.period(today - dob, unit = "years")

正確な開始日と終了日が考慮されていないため、これはあくまでも推定であるというメッセージが表示されます。

4
misspelled

これは古い質問ですが、私はまだ次のクリーンなアプローチを欠いています。 (Tidyverseは "%>%"演算子でのみ必要です。)

library(tidyverse)
library(lubridate)

today<-mdy(08312015)
dob<-mdy(09071982)

interval(dob, today) %>%
  as.numeric('years')

# 32.98015 - you have to decide how to deal with the fraction of a year
0
ACNB