#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»