我正在嘗試構建文件夾以存儲數據。我想在拉數據的那一天標記文件夾。如何從日期中減去/添加日期?
Ex。我從MySQL拉5天前的數據我想命名文件夾從5天前的日期。
MySQL可以輕鬆處理日期算術。我不確定R是怎麼做到的。我是否應該在POSIXct中減去適當的秒數,然後轉換爲POSIXlt來命名文件夾MM_DD_YYYY?
或者還有更好的方法嗎?
我正在嘗試構建文件夾以存儲數據。我想在拉數據的那一天標記文件夾。如何從日期中減去/添加日期?
Ex。我從MySQL拉5天前的數據我想命名文件夾從5天前的日期。
MySQL可以輕鬆處理日期算術。我不確定R是怎麼做到的。我是否應該在POSIXct中減去適當的秒數,然後轉換爲POSIXlt來命名文件夾MM_DD_YYYY?
或者還有更好的方法嗎?
只是減去一個數:
> 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"
答案可能取決於你的日期是什麼格式,但這裏是使用Date
類的例子:
dt <- as.Date("2010/02/10")
new.dt <- dt - as.difftime(2, unit="days")
你甚至可以用不同的單位像周玩。
as.difftime的有效單位是:「secs」,「mins」,「hours」,「days」,「weeks」。 – jbaums 2011-06-10 01:06:14
當然還有對這個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"
或者使用POSIXct並減去一天的時間。 'trunc()'和'round()'對修剪POSIXt對象也很有用。 – Sharpie 2010-02-13 03:29:06
好吧,看起來像迄今爲止最好的。只是爲了確保它能正確處理不同的月份日期和閏年? – Dan 2010-02-14 22:43:13
是的,它正確地完成了所有這些事情。您可以通過將日期設置爲DST(例如)來進行快速測試,以確認這一點,因爲每種方法都可能有不同的行爲。 – Shane 2010-02-22 20:49:42