1. ホーム
  2. r

[解決済み] 2つの日付の間の月数

2023-08-05 23:41:05

質問

Rで2つの日付の間の月数を計算するための標準的/一般的な方法/公式はありますか?

私は次のようなものを探しています。 MathWorksの月関数

どのように解決するのですか?

簡単なことだと言おうと思ったのですが difftime() は週で止まってしまう。なんて変なんだ。

だから、一つの可能な答えは、何かをハックすることでしょう。

# turn a date into a 'monthnumber' relative to an origin
R> monnb <- function(d) { lt <- as.POSIXlt(as.Date(d, origin="1900-01-01")); \
                          lt$year*12 + lt$mon } 
# compute a month difference as a difference between two monnb's
R> mondf <- function(d1, d2) { monnb(d2) - monnb(d1) }
# take it for a spin
R> mondf(as.Date("2008-01-01"), Sys.Date())
[1] 24
R> 

だいたい合っているような気がします。 これを単純なクラス構造にまとめることもできます。あるいはハックとして残しておくか :)

編集します。 また、Mathworksからのあなたの例で動作するようです。

R> mondf("2000-05-31", "2000-06-30")
[1] 1
R> mondf(c("2002-03-31", "2002-04-30", "2002-05-31"), "2002-06-30")
[1] 3 2 1
R> 

を追加することで EndOfMonth フラグを追加することは、読者への課題として残されています :)

2 を編集します。 たぶん difftime と一致するような差分を表現する信頼できる方法がないため、省略したのでしょう。 difftime の動作と一致するような信頼できる方法がないためです。