2015-10-27 4 views
1

Я прочитал this example об использовании origin, чтобы установить время начала. Я читаю из csv, где датами являются количество дней и считаются факторами.R Дата начала координат для форматирования

Example: $ admin_date : Factor w/ 318 levels "37362","37735" 

Я бы хотел конвертировать в формат даты, чтобы измерять количество дней и месяцев между событиями. Но когда я пытаюсь все различные origin, такие как:

df$admin_date_new <- as.numeric(df$admin_date) 
df$admin_date_new <- as.Date(df$admin_date, origin="1900/01/01") 

я получаю следующее:

$ admin_date_new: Date, format: "1900-08-31" 

Является ли это что-то с поиском правильного origin или это, когда я конвертирование в numeric

Возможно ли быстрое найти источник? Я прочитал help("as.Date") и все, что я получил:

## date given as number of days since 1900-01-01 (a date in 1989) 
as.Date(32768, origin = "1900-01-01") 
## Excel is said to use 1900-01-01 as day 1 (Windows default) or 
## 1904-01-01 as day 0 (Mac default), but this is complicated by Excel 
## incorrectly treating 1900 as a leap year. 
## So for dates (post-1901) from Windows Excel 
as.Date(35981, origin = "1899-12-30") # 1998-07-05 
## and Mac Excel 
as.Date(34519, origin = "1904-01-01") # 1998-07-05 
## (these values come from http://support.microsoft.com/kb/214330) 
+0

'as.numeric (as.character (df $ admin_date))' – Roland

+0

@Roland спасибо. Но это дает даты в будущем – Jebediah15

ответ

1

Вы не дают ожидаемого результата, но, возможно, это:

x <- factor(c("37362", "37735")) 
y <- as.numeric(as.character(x)) 
as.Date(y, origin = "1900-01-01") 
#[1] "2002-04-18" "2003-04-26" 

Если вы не знаете, происхождение, нет никакого способа узнайте только из ваших данных.

+0

спасибо. Это отлично работает. Мне пришлось немного изменить: as.Date (y - 2, origin = "1900-01-01") --- поскольку преобразование добавляло два дня к окончательному результату. – Jebediah15

Смежные вопросы