您也可以通过parse_date_time
或fast_strptime
函数来实现此目的从lubridate
-package NS:
> parse_date_time(dates1, "ym")
[1] "2009-01-01 UTC" "2009-02-01 UTC" "2009-03-01 UTC"
> fast_strptime(dates1, "%Y-%m")
[1] "2009-01-01 UTC" "2009-02-01 UTC" "2009-03-01 UTC"
这两个之间的区别在于,parse_date_time
允许lubridate风格的格式规范,而fast_strptime
需要相同的格式规范作为strptime
。
用于指定时区,你可以使用tz
-parameter:
> parse_date_time(dates1, "ym", tz = "CET")
[1] "2009-01-01 CET" "2009-02-01 CET" "2009-03-01 CET"
当你在你的日期时间数据的不规则性,可以使用truncated
-parameter指定多少违规行为被允许:
> parse_date_time(dates2, "ymdHMS", truncated = 3)
[1] "2012-06-01 12:23:00 UTC" "2012-06-01 12:00:00 UTC" "2012-06-01 00:00:00 UTC"
使用的数据
dates1 <- c("2009-01","2009-02","2009-03")
dates2 <- c("2012-06-01 12:23","2012-06-01 12",'2012-06-01")
日期还有其他什么格式?我看到了POSIX和ISO的东西,但我不确定这些是不同的格式。我认为这些只是功能,... – 2011-06-05 12:57:51
值得注意的是,你可以指定一天在格式化程序中相同,所以你可以做'as.Date(month,format ='%Y-%m-01') '并取得相同的结果。这种“感觉”比我更喜欢,因为指定每个月的同一日期更多地是日期和字符串操作的格式,但也许这是无稽之谈。 – JBecker 2013-05-24 16:57:56
@JBecker你的建议对我不起作用。 '> as.Date(“2016-01”,format =“%Y-%m-01”) #[1] NA'。 我正在使用R 3.3.1 – n8sty 2017-01-20 20:43:57