我正在尝试构建用于存储数据提取的文件夹。我想用拉动中的数据日标记文件夹。
实施例。我在5天前从mysql中提取数据我想将文件夹命名为5天前的日期。
MySQL可以轻松处理日期算术。我不确定R是怎么做到的。我应该在POSIXct中减去适当的秒数然后转换为POSIXlt来命名文件夹MM_DD_YYYY吗?
或者有更好的方法吗?
答案 0 :(得分:75)
只需减去一个数字:
> 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"
答案 1 :(得分:44)
答案可能取决于您的日期格式,但以下是使用Date
类的示例:
dt <- as.Date("2010/02/10")
new.dt <- dt - as.difftime(2, unit="days")
你甚至可以玩几周不同的单位。
答案 2 :(得分:21)
当然有一个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"