我正在尝试构建文件夹以存储数据。我想在拉数据的那一天标记文件夹。如何从日期中减去/添加日期?
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