2017-01-04 44 views
-1

想我将下面的日期从人物到简单的日期格式R.定义为每年两位数字年份日期格式

character_date <- "19-Jan-44" 
date <- as.Date(strptime(x = as.character(character_date), format= "%d-%b-%y")) 
> date 
[1] "2044-01-19" 

[R假定它是2044,而不是1944年(这是所期望的),怎么样我告诉R实际上是哪年?

非常感谢!

+0

您需要提供关于它是否可以是1944或2044的上下文 – akrun

+1

那么您如何显示2044年或1844年的日期?或者必须假设每一个日期都将属于19世纪? –

+0

如果你总是假设20世纪,我想你可以将它嵌入到你的字符串中,就像'as.Date(gsub(“(。*) - (。*)”,“\\ 1-19 \\ 2 “,character_date),format =”%d-%b-%Y“)',请在转换为Date类时不要使用'strptime' –

回答

0

我们可以创建一个函数来做到这一点

library(lubridate) 
f1 <- function(x, year=1970){ 
    x <- dmy(x) 
    m <- year(x) %% 100 
    year(x) <- ifelse(m > year %% 100, 2000+m, 1900+m) 
    x 
} 

f1(character_date) 
#[1] "1944-01-19" 

如果总是有19作为前缀年

dmy(sub("-(\\d+)", "-19\\1", character_date)) 
#[1] "1944-01-19" 
0

您只需追加"-19"字符串并做format = "%d-%b-y-%C"

相关问题