2017-07-21 62 views
2

我有一个角色矢量的日期。我不能轻易地使用as.Date转换为日期矢量,因为并非所有字符串的格式都是mm/dd/yyyy,因此给了我不明确的日期错误。一些字符串的格式为m/dd/yyyy(月份1:9)。将前导零加到日期

这里是载体的一部分:

data$Date <- c("8/26/2014","3/10/2014","9/25/2014","11/12/2014","8/4/2015") 

指标的日期,让我知道我需要增加一个零

data$date <- grepl("[0-9]{2}/[0-9]{2}/[0-9]{4}", data$Date) 

试图通过有条件加零哪些字符串:

data$Date<-ifelse(data$date == "FALSE", paste0("0", data$Date), data$Date) 

不起作用(我不熟悉粘贴)。任何简明的解决方案,以添加前导零到单位数月(m/dd/yyy)?我猜gsub或sub?我需要所有的字符串形式为mm/dd/yyy,所以我可以转换为日期向量。

+1

填充具有前导零不需要在这里,但以供将来参考,这里是一个选项:'数据$日期= ifelse(grepl( '^ [1-9] /',日期),paste0( “0”,数据$日期),数据$日期)' – eipi10

+0

谢谢你的工作。你是什​​么意思,没有必要?有一种方法可以将R识别为日期而不添加零点? –

+0

是的,请参阅下面的@ Florian的回答。您只需提供一个'format'字符串,告诉'asDate'如何解析日期字符串。 – eipi10

回答

1
data <- data.frame(Date=c("8/26/2014","3/10/2014","9/25/2014","11/12/2014","8/4/2015")) 

as.Date(data$Date,format="%m/%d/%Y") 

对您的数据适合我。输出是

"2014-08-26" "2014-03-10" "2014-09-25" "2014-11-12" "2015-08-04" 
+0

你说得对,它看起来不错,但是当你尝试对它进行操作时,比如说这个日期少于给定日期,会弹出一个错误消息,说明日期不明确。 –