2015-12-17 3 views
-2

Я делаю операцию ifelse на две даты, и моя итоговая дата приходит как число. Мой конкретный вопрос - как преобразовать это число в формат даты.конвертировать число на данный момент в R

Ниже приведен код, который создал эту проблему, переменная fecha_epi_final:

library(lubridate) 
library(dplyr) 
    temp_epi2 <- temp_epi1 %>% 
    ungroup() %>% 
    mutate (b1 = force_tz(b1, tzone = "GMT"), 
      b2 = b2 - days(1), 
      fecha_epi_final = ifelse (is.na(b2) == T, b1 , 
            ifelse (b1>=b2 , b2 , b1)), 
      mes_epi_inicio = floor_date(fecha_epi_inicio, "month")) 

ул из fecha_epi_final является числом, что и в примере: 1417564800

как использование тест кадра данных:

library(lubridate) 
library(dplyr) 
b1 <- c('2015-01-30' , '2014-12-17') 
b2 <- c(NA , '2014-12-15') 
temp_epi1 <- data.frame(b1 , b2) %>% 
       mutate(b1 = ymd(b1) , 
         b2 = ymd(b2)) 
+0

по количеству вы имеете в виду эпоху времени? вы можете использовать: date <- as.POSIXct (yournumber, origin = "1970-01-01", tz = "") – MLavoie

+0

Основная проблема заключается в том, что 'ifelse' не сохраняет атрибуты. Если вы отбросите беспорядок и уменьшите это до минимального примера, вы бы это видели. Все, что я вижу здесь, это путаница труб и dplyr, которые ничего не добавляют к ясности. – Spacedman

ответ

2

Почему не просто:

as.POSIXlt(1417564800, origin="1970-01-01", tz="America/New_York") 
# [1] "2014-12-02 19:00:00 EST" 
Смежные вопросы