web-dev-qa-db-ja.com

日付から日付を追加/削除する方法は?

データプルを保存するフォルダーを構築しようとしています。プルでそのデータの日をフォルダーにラベル付けしたいと思います。

例mysqlから5日前のデータを取得します。5日前の日付をフォルダーに指定します。

MySQLは日付の算術を簡単に処理できます。 Rがそれをどのように行うのか正確にはわかりません。 POSIXctで適切な秒数を減算してから、POSIXltに変換してフォルダーにMM_DD_YYYYという名前を付ける必要がありますか?

または、より良い方法がありますか?

47
Dan

数字を引くだけです:

> as.Date("2009-10-01")
[1] "2009-10-01"
> as.Date("2009-10-01")-5
[1] "2009-09-26"

Dateクラスには日しかないため、基本的な算術演算を行うことができます。

何らかの理由でPOSIXltを使用する場合は、そのスロットを使用できます。

> a <- as.POSIXlt("2009-10-04")
> names(unclass(as.POSIXlt("2009-10-04")))
[1] "sec"   "min"   "hour"  "mday"  "mon"   "year"  "wday"  "yday"  "isdst"
> a$mday <- a$mday - 6
> a
[1] "2009-09-28 EDT"
80
Shane

答えは、おそらく日付の形式によって異なりますが、Dateクラスを使用した例を次に示します。

dt <- as.Date("2010/02/10")
new.dt <- dt - as.difftime(2, unit="days")

数週間のような異なるユニットでプレイすることもできます。

46
Aniko

もちろんこれにはlubridateソリューションがあります:

library(lubridate)
date <- "2009-10-01"

ymd(date) - 5
# [1] "2009-09-26"

と同じです

ymd(date) - days(5)
# [1] "2009-09-26"

他の時間形式は次のとおりです。

ymd(date) - months(5)
# [1] "2009-05-01"

ymd(date) - years(5)
# [1] "2004-10-01"

ymd(date) - years(1) - months(2) - days(3)
# [1] "2008-07-29"
23
J_F