Estoy tratando de crear carpetas para almacenar los datos de la tira. Quiero etiquetar las carpetas con el día de los datos en la extracción.

Ex. Me tire 5 días de datos de mysql quiero el nombre de la carpeta de la fecha de hace 5 días.

MySQL puede manejar fácilmente la fecha de la aritmética. No estoy seguro exactamente de cómo R hace. Debo restar el número de segundos en POSIXct y, a continuación, convertir a POSIXlt a nombre de la carpeta MM_DD_AAAA?

O hay una mejor manera?

InformationsquelleAutor Dan | 2010-02-12

3 Comentarios

  1. 83

    Sólo resta un número:

    > as.Date("2009-10-01")
    [1] "2009-10-01"
    > as.Date("2009-10-01")-5
    [1] "2009-09-26"

    Desde el Date clase sólo tiene días, usted puede hacer aritmética básica en él.

    Si quieres usar POSIXlt por alguna razón, entonces usted puede utilizar las ranuras de:

    > a <- as.POSIXlt("2009-10-04")
    > names(unclass(as.POSIXlt("2009-10-04")))
    [1] "sec"   "min"   "hour"  "mday"  "mon"   "year"  "wday"  "yday"  "isdst"
    > a$mday <- a$mday - 6
    > a
    [1] "2009-09-28 EDT"
    • O uso POSIXct y restar un día de segundos. trunc() y round() también son útiles para recortar POSIXt objetos.
    • aceptar que se parece el mejor hasta ahora. Y sólo para asegurarse de que controla los diferentes meses del día de las cantidades y los años bisiestos correctamente?
    • Sí, sí, todas esas cosas correctamente. Usted puede hacer una prueba rápida a sí mismo mediante el establecimiento de una fecha a alrededor de horario de verano (por ejemplo) para confirmar esto, ya que cada enfoque puede tener un comportamiento diferente.
    • También, la R de la documentación de los estados que $a diario es sólo informativo y no puede ser utilizado para el incremento de la fecha.
    • y el uso format junto con as.Date dependiendo de sus necesidades, por ejemplo, la as.Date('15/02/2015', format('%d/%m/%Y'))+ 21
  2. 47

    La respuesta depende, probablemente, de lo que el formato de la fecha es, pero aquí está un ejemplo de uso de la Date clase:

    dt <- as.Date("2010/02/10")
    new.dt <- dt - as.difftime(2, unit="days")

    Usted puede incluso jugar con las diferentes unidades de semanas.

    • Válido unidades de medida.difftime son: «s», «minutos», «horas», «días», «semanas».
  3. 24

    Por supuesto, hay un lubridate solución para esto:

    library(lubridate)
    date <- "2009-10-01"
    
    ymd(date) - 5
    # [1] "2009-09-26"

    es el mismo que

    ymd(date) - days(5)
    # [1] "2009-09-26"

    Otros formatos de tiempo podría ser:

    ymd(date) - months(5)
    # [1] "2009-05-01"
    
    ymd(date) - years(5)
    # [1] "2004-10-01"
    
    ymd(date) - years(1) - months(2) - days(3)
    # [1] "2008-07-29"
    • Para que la gente comúnmente con fechas, el lubridate biblioteca es la más intuitiva opción.

Dejar respuesta

Please enter your comment!
Please enter your name here