R дата из Excel не конвертируется

#r #excel #date

#r #excel #Дата

Вопрос:

Следующий код, который я просмотрел в stackoverflow, ничего не работает для правильного преобразования из Excel в Date(). dput() показывает даты ввода из Excel. Как преобразовать такие цифры?

     data.3$Date <- as.Date(as.numeric(data.3$Date), origin="1899-12-30")
    z <- as.yearmon("39225",format="%Y%m")

    dput(data.3$Date)
    structure(c(-25545, -25551, -25529, -25521, -25545, -25522, -25544, 
-25538, -25547, -25548, -25546, -25521, -25526, -25521, -25537,
 

Комментарии:

1. В R, когда я read.xlsx () Я включил as.data.frame=TRUE. Рассматриваемое поле является полем даты, но в data.frame оно проявляется как фактор:: str(data.5) ‘data.frame’: 1555 об. из 4 переменных: $ Date : фактор с 139 уровнями «12 мая 2007»

2. из str() data.frame можно увидеть, что значение $Date: Factor с уровнями 139 имеет значение «12 мая 2007 года». Итак, внутри файла данных я получаю цифры, например, 41411 и т.д.

3. При чтении во фрейме данных полезно записать stringsAsFactors = FALSE , а затем дата (и все остальные поля) будут отображаться в виде символьных строк. Тогда гораздо проще преобразовать ее в дату, используя as.Date из lubridate пакета

4. хорошо, я сделаю это stringsAsFactors…

5. это read.xlsx ДОСТУПНЫ ли stringsAsFactors = FALSE на read.xlsx ? Да, это так

Ответ №1:

Чтобы ответить на последние 5 комментариев. вопросы… Я применил этот код к полю даты из Excel, используя strptime(data, format=), например,

 abberville_df4  <- subset(data.4, ((
  (data.4$Original.Hospital.Location == 'Abbeville' 
   amp; strptime(data.4$Date, format="%Y-%m-%d") >= "2007/04/30" 
   amp; strptime(data.4$Date, format="%Y-%m-%d") <= "2007/08/01"))))
 

Комментарии:

1. ДА, теперь он работает нормально, используя strptime() для формата; однако при условном тестировании 2007/04/30 я обнаружил, что данные были изменены, поэтому мне нужно было изменить формат =»%Y-%m-%d» из format=»%d-%m-%Y»