[R-br] DÚVIDA as.Date - erro na transformação

Paulo Justiniano paulojus em leg.ufpr.br
Terça Setembro 25 11:51:43 BRT 2012


Isto é porque no padrao atual todos os anos reopresetnedos por 2 
digitos até 68 sao considertados do século atual

%y
Year without century (00–99). On input, values 00 to 68 are prefixed 
by 20 and 69 to 99 by 19 – that is the behaviour specified by the 2004 and 
2008 POSIX standards, but they do also say ‘it is expected that in a 
future version the default century inferred from a 2-digit year will 
change’

Uma solucao é transformar seu vetor strings para anos com 4 digitos e
uma possivel forma de fazer isto segue abaixo
(vou supor que qq ano entre 00 e 12 é do seculo 21 (20??), caso contrário 
no 20  (19??)

> (ap1 <- strsplit(dates, "/"))
[[1]]
[1] "12" "30" "68"

[[2]]
[1] "12" "31" "68"

[[3]]
[1] "01" "01" "69"

[[4]]
[1] "01" "02" "69"

[[5]]
[1] "02" "01" "92"

> (ap2 <- lapply(ap1, function(x) if(x[3] < 12) c(x[1:2], paste("20", 
x[3], sep="")) else c(x[1:2], paste("19", x[3], sep=""))))
[[1]]
[1] "12"   "30"   "1968"

[[2]]
[1] "12"   "31"   "1968"

[[3]]
[1] "01"   "01"   "1969"

[[4]]
[1] "01"   "02"   "1969"

[[5]]
[1] "02"   "01"   "1992"


> (ap3 <- unlist(lapply(ap2, function(x) paste(x, collapse="/"))))
[1] "12/30/1968" "12/31/1968" "01/01/1969" "01/02/1969" "02/01/1992"

> as.Date(ap3, "%m/%d/%Y")
[1] "1968-12-30" "1968-12-31" "1969-01-01" "1969-01-02" "1992-02-01"




On Tue, 25 Sep 2012, "Conceição - UNESP Rio Claro, SP" wrote:

> Prezados membros,
> Saudações,
> Estou tendo dificuldade com a conversão de formatos no comando as.Date
> (que entendo é diferente do as.date, d minúsculo).
> Segue abaixo:
> 1 - comandos
> dates <- c( "12/30/68","12/31/68", "01/01/69", "01/02/69", "02/01/92")
> as.Date(dates, "%m/%d/%y") # MÊS/DIA/ANO
> Quero transformar para ano = 4 dígitos
> 2- resultados
>> dates <- c( "12/30/68","12/31/68", "01/01/69", "01/02/69", "02/01/92")
>
>> as.Date(dates, "%m/%d/%y")
> [1] "2068-12-30" "2068-12-31" "1969-01-01" "1969-01-02" "1992-02-01"
>
> Para datas anteriores a 31/12/1968 ele transforma o ano 68 em 2068 ao
> invés de 1968.
> Não sei como resolver.
> -- 
> Atenciosamente,
> Profa. Dra. Maria da Conceição F. Freitas Tandel
> UNESP - IGCE- DEMAC
> RIO CLARO, SP
>
> _______________________________________________
> R-br mailing list
> R-br em listas.c3sl.ufpr.br
> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
>


Mais detalhes sobre a lista de discussão R-br