我无法计算从.csv文件导入的日期。我想要做的是在DateClosed因子中取这个日期,并在日期字段(a)中生成一个日期。示例如果a = 203我希望日期等于DateClosed-203。但是,我遇到下面列出的代码有问题。
DateClose是一个因素。
> head(DateClosed)
[1] 7/30/2007 12/12/2007 5/8/2009 6/24/2009 6/24/2009 2/29/2008
165 Levels: 1/12/2010 1/15/2011 1/15/2013 1/17/2009 1/18/2008 1/19/2012 1/2/2013 1/21/2013 1/22/2010 1/24/2013 1/26/2014 ... 9/7/2010
> head(as.Date(DateClosed,format="%m/%d/%y"))
[1] "2020-07-30" "2020-12-12" "2020-05-08" "2020-06-24" "2020-06-24" "2020-02-29"
head(as.Date(DateClosed,format="%m/%d/%y"))-203
[1] "2020-01-09" "2020-05-23" "2019-10-18" "2019-12-04" "2019-12-04" "2019-08-10"
它正确地减去了203天但由于某种原因错误地读取了日期。
答案 0 :(得分:7)
DateClosed <- factor(c("7/30/2007","12/12/2007", "5/8/2009"))
as.Date(DateClosed, format="%m/%d/%Y")
产地:
[1] "2007-07-30" "2007-12-12" "2009-05-08"
注意format
param中的大写字母“Y”。小写“y”表示2位数年份,因此as.Date
读取年份标记的前两位数字(“20”),然后假设它仅指年份的最后两位数字,并添加当前日期的世纪(也是“20”),所以你最终会在2020年结束日期。
答案 1 :(得分:0)
使用lubridate
包来操作日期变得非常简单。
mdy(factor(c("7/30/2007","12/12/2007", "5/8/2009")))
"2007-07-30 UTC" "2007-12-12 UTC" "2009-05-08 UTC"
或者使用parse_date_time
使用相同的包:
parse_date_time(factor(c("7/30/2007","12/12/2007", "5/8/2009")),c('mdY'))
[1] "2007-07-30 UTC" "2007-12-12 UTC" "2009-05-08 UTC"