2013-08-30 5 views
1

У меня есть два (значительно длинных) вектора даты, например.Как объединить два вектора даты в R?

> c1 <- c(as.Date("2013-08-29"), as.Date("2013-08-30")) 
> c2 <- c(as.Date("2013-08-30"), as.Date("2013-08-31")) 

и я ищу какой-нибудь операции, как

> union(c1, c2) 
[1] "2013-08-29" "2013-08-30" "2013-08-31" 

Стандартная операция объединения в R возвращает

[1] 15946 15947 15948 

Кто-нибудь знает (короткое изящное /) решение этой проблемы?

ответ

5

Просто используйте as.Date

> as.Date(union(c1, c2)) 
[1] "2013-08-29" "2013-08-30" "2013-08-31" 

Попробуйте это:

> as.Date(c(15946, 15947, 15948), origin = "1970-01-01") 
[1] "2013-08-29" "2013-08-30" "2013-08-31" 
+0

Я уже пробовал это: «Ошибка в as.Date.numeric (union (c1, c2)):« источник »должен быть поставлен». – idleherb

+0

Я не получил сообщение об ошибке, но если «origin» требуется, укажите дату начала координат, см. Мое редактирование. –

+0

as.Date (объединение (c1, c2), origin = "1970-01-01") выполняет эту работу. – idleherb

1

или использовать класс (c3) = "Дата"

 
> c1 = c(as.Date("2013-08-29"), as.Date("2013-08-30")) 
> c2 = c(as.Date("2013-08-30"), as.Date("2013-08-31")) 
> c3 = union(c1,c2) 
> class(c3) = "Date" 
> c3 
[1] "2013-08-29" "2013-08-30" "2013-08-31" 
+0

Спасибо, это тоже работает, хотя я предпочитаю конвертировать с as.Date (...). – idleherb

+0

Используя as.Date, вы рискуете поставить неправильное происхождение. –

3

альтернатива использованию union

unique(c(c1,c2)) 
[1] "2013-08-29" "2013-08-30" "2013-08-31" 
Смежные вопросы