76

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

元。mysql から 5 日前のデータを取得します。フォルダに 5 日前の日付の名前を付けたいと考えています。

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

それとももっと良い方法がありますか?

4

3 に答える 3

108

数字を引くだけです:

> 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"
于 2010-02-12T21:18:44.077 に答える
54

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

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

週などのさまざまな単位で遊ぶこともできます。

于 2010-02-12T21:05:40.407 に答える
46

もちろん、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"
于 2016-09-26T09:37:09.197 に答える