2016-05-05 3 views
1

Я читал в CSV-файле в R, где .csv-файл был первоначально сохранен в формате Excel.Почему применение as.Date() на «общих» форматированных переменных excel не может работать?

При подготовке к CSV-файлу я сделал копию и вставку содержимого новой электронной таблицы, а переменная Date.Sold была отформатирована как «общая» в Excel.

Мне любопытно, почему применение команды as.Date() на «общие» форматированные значения даты (из Excel) не может работать в R? Это дает мне ряд значений NA. Если я форматировал переменную Date.Sold в «дату» в Excel перед чтением в R, команда as.Date() работает нормально. Почему это так? Есть ли способ прочитать эти «общие» форматированные переменные в правильные даты в R?

Некоторая информация о моей переменной и команды я использовал:

Str(Date.Sold): $ Date.Sold : Factor w/ 789 levels "-","40965.00",..: 461 463 456 17 

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

A$Date = as.Date(A$Date.Sold, "%d/%m/%Y") 

ответ

0

Вы должны дать год происхождения дат в Excel: «1899- 12-30 ", поэтому ваша функция должна выглядеть как as.Date(date, origin = "1899-12-30").

С наилучшими пожеланиями,

+0

спасибо, что работал! :) – hagewhy

1

Я думаю, вы могли бы неправильно понять функцию as.Date(): Вы всегда должны указать, в каком формате даты вы хотите конвертировать в настоящее время.

Например, если дата в символьном представлении выглядит следующим образом "02/08/2014", то вам нужно, чтобы преобразовать его в формат = "% d /% м /% Y":

as.Date("02/08/2014",format="%d/%m/%Y") 

Если ваша дата находится в общем формате excel, вам нужно использовать аргумент origin. Например:

as.Date(30829, origin = "1899-12-30") 

В вашем случае, вы, возможно, потребуется выполнить преобразование типа первого, так как у вас есть факторы:

as.Date(as.integer(as.character(30829)), origin = "1899-12-30") 
+0

спасибо за подробное объяснение! :) Теперь я лучше понимаю команду as.Date() и как аргументы должны вводиться в разных сценариях. – hagewhy