[R-es] problema de fechas

Carlos Ortega cof en qualityexcellence.es
Mar Feb 13 09:26:48 CET 2018


Hola,

Sí, en el ejemplo de la ayuda de "ifelse" se advierte de este problema y
ofrece dos alternativas: una la que he propuesto y otra.
Con cualquiera de las dos el problema se resuelve.

## ifelse() strips attributes
## This is important when working with Dates and factors
x <- seq(as.Date("2000-02-29"), as.Date("2004-10-04"), by = "1 month")
## has many "yyyy-mm-29", but a few "yyyy-03-01" in the non-leap years
y <- ifelse(as.POSIXlt(x)$mday == 29, x, NA)
head(y) # not what you expected ... ==> need restore the class attribute:
class(y) <- class(x)
y
## ==> Again a case where it is better *not* to use ifelse(), but
## both more efficient and clear:
y2 <- x
y2[as.POSIXlt(x)$mday != 29] <- NA
stopifnot(identical(y2, y))

Saludos,
Carlos Ortega
www.qualityexcellence.es

El 13 de febrero de 2018, 9:11, Álvaro Hernández <alvarohv en um.es> escribió:

> Yo entiendo que lo que quiere es saber cómo hacer el 'ifelse' para que no
> le devuelva un vector numérico porque para transformarlo podría hacer
> simplemente 'as_date(fechas2)'.
>
> El problema yo creo que es por tema coerción con el 'NA' (sumado al
> comportamiento de 'ifelse'). Estaba buscando alternativas como
> NA_character_, NA_numeric_, etc. pero no encuentro para fecha, así que, se
> podría hacer algo como:
>
> fechas2 <- if_else(fechas > "2016-12-31", as_date(NA), fechas)
>
> Un saludo
> Álvaro
>
> El 13/02/18 a las 01:04, Carlos Ortega escribió:
>
> Hola,
>>
>> Esta es una forma...
>>
>> library(lubridate)
>>> library(dplyr)
>>>
>>> fechas <- c("2016-07-15", "2016-10-12", "2017-02-11")
>>> fechas_new <- ymd(fechas)
>>>
>>> res_out <- ifelse(year(fechas_new) > 2016, NA, fechas_new)
>>> res_out
>>>
>> [1] 16997 17086    NA
>>
>>> class(res_out) <- class(fechas_new)
>>> res_out
>>>
>> [1] "2016-07-15" "2016-10-12" NA
>>
>>
>> No lo había visto hasta ahora, es un caso que se cuenta en la ayuda de
>> "ifelse()" con un ejemplo...
>>
>> Saludos,
>> Carlos Ortega
>> www.qualityexcellence.es
>>
>>
>> 2018-02-13 0:54 GMT+01:00 patricio fuenmayor <
>> patricio.fuenmayor en gmail.com>:
>>
>> hola Patricio, usa:
>>> dplyr::if_else
>>>
>>>          [[alternative HTML version deleted]]
>>>
>>> _______________________________________________
>>> R-help-es mailing list
>>> R-help-es en r-project.org
>>> https://stat.ethz.ch/mailman/listinfo/r-help-es
>>>
>>>
>>
>>
> _______________________________________________
> R-help-es mailing list
> R-help-es en r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>



-- 
Saludos,
Carlos Ortega
www.qualityexcellence.es

	[[alternative HTML version deleted]]



Más información sobre la lista de distribución R-help-es