Создание уникальной последовательности дат - PullRequest
12 голосов
/ 24 сентября 2011

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

2011-08-01
2011-08-02
2011-08-03
2011-08-04
...

Я хочу знать, возможно ли сгенерировать эти данные с помощью команды seq().

Что-то вроде следующего: (очевидно, не работает)

seq(2011-08-01:2011-08-31)

Должен ли я вместо этого использовать toDate и regex для создания этой даты в этом определенный формат.

Ответы [ 4 ]

32 голосов
/ 24 сентября 2011

Как я отметил в своем комментарии, seq имеет метод для дат, seq.Date:

seq(as.Date('2011-01-01'),as.Date('2011-01-31'),by = 1)
 [1] "2011-01-01" "2011-01-02" "2011-01-03" "2011-01-04" "2011-01-05" "2011-01-06" "2011-01-07" "2011-01-08"
 [9] "2011-01-09" "2011-01-10" "2011-01-11" "2011-01-12" "2011-01-13" "2011-01-14" "2011-01-15" "2011-01-16"
[17] "2011-01-17" "2011-01-18" "2011-01-19" "2011-01-20" "2011-01-21" "2011-01-22" "2011-01-23" "2011-01-24"
[25] "2011-01-25" "2011-01-26" "2011-01-27" "2011-01-28" "2011-01-29" "2011-01-30" "2011-01-31"
10 голосов
/ 24 сентября 2011

Я сделал ту же ошибку с seq (), пытаясь создать числовую последовательность.Не используйте оператор «:» между аргументами, и они должны быть датами, если вы хотите создать последовательность дат.Другой способ - взять одну дату и добавить числовую последовательность, начинающуюся с 0:

> as.Date("2000-01-01") + 0:10
 [1] "2000-01-01" "2000-01-02" "2000-01-03" "2000-01-04" "2000-01-05" "2000-01-06"
 [7] "2000-01-07" "2000-01-08" "2000-01-09" "2000-01-10" "2000-01-11"
7 голосов
/ 24 сентября 2011

Вы можете попробовать timeBasedSeq в пакете xts. Обратите внимание, что аргумент - это строка и использование двойного двоеточия.

timeBasedSeq("2011-08-01::2011-08-31")
1 голос
/ 14 февраля 2016

Мне нужно было сгенерировать seq по минутам, и это было нелегко, но я нашел seq.POSIXt в базе.В вашем случае вы хотите последовательность ежедневных данных с 2011-08-01 по 2011-08-31.Поэтому я предлагаю вам

days <- seq(ISOdate(2011,8,1), by = "day", length.out = 31)
class(days)
"POSIXct" "POSIXt"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...