2016-03-08 3 views
1

Я хотел бы создать dataframe с его первой колонкой как Date и второй столбец как Time. Условием является то, что время должно увеличиваться за 30 минутный интервал и дату соответственно. И позже я добавлю другие столбцы вручную.Создайте кадр данных с столбцами данных Дата и время

> df 
Date   Time 
2012-01-01 00:00:00 
2012-01-01 00:30:00 
2012-01-01 01:00:00 
2012-01-01 01:30:00 
.......... ........ 
.......... ........ 
and so on... 

EDIT

Может быть сделано по-другому, а также.

Один столбец может быть создан с заданной датой и временем, а затем отделен позже, используя tidyr или любые другие пакеты.

> df 
DateTime 
2012-01-01 00:00:00 
2012-01-01 00:30:00 
2012-01-01 01:00:00 
2012-01-01 01:30:00 
.......... 
.......... 
and so on... 

Любая помощь будет оценена по достоинству. Заранее спасибо.

+0

Как вы собираетесь использовать дату и время? Возможно, вам лучше иметь только один столбец даты, а затем _представляя отдельные компоненты даты и времени по мере необходимости. –

+0

Да, это тоже можно сделать. Мне действительно нужна помощь в этом. –

+2

'date_seq <- seq (as.POSIXct (" 2012-01-01 "), as.POSIXct (" 2012-02-01 "), by = (30))' – SymbolixAU

ответ

2

вы можете создать последовательность с помощью seq, с указанием даты начала и окончания, а также временной интервал

df <- data.frame(DateTime = seq(as.POSIXct("2012-01-01"), 
           as.POSIXct("2012-02-01"), 
           by=(30*60))) 
head(df) 
      DateTime 
1 2012-01-01 00:00:00 
2 2012-01-01 00:30:00 
3 2012-01-01 01:00:00 
4 2012-01-01 01:30:00 
5 2012-01-01 02:00:00 
6 2012-01-01 02:30:00 

И получить их в двух отдельных графах, мы можем использовать ?strftime

date_seq <- seq(as.POSIXct("2012-01-01"), 
       as.POSIXct("2012-02-01"), 
       by=(30*60)) 

df <- data.frame(Date = strftime(date_seq, format="%Y-%m-%d"), 
       Time = strftime(date_seq, format="%H:%M:%S")) 

     Date  Time 
1 2012-01-01 00:00:00 
2 2012-01-01 00:00:30 
3 2012-01-01 00:01:00 
4 2012-01-01 00:01:30 
5 2012-01-01 00:02:00 
6 2012-01-01 00:02:30 

Обновление

Вы также можете указать time часть POSIXct datetime. Это даст вам более точный контроль над вашими верхними & нижними границами:

date_seq <- seq(as.POSIXct("2012-01-01 00:00:00"), 
       as.POSIXct("2012-02-02 23:30:00"), 
       by=(30*60)) 

df <- data.frame(Date = strftime(date_seq, format="%Y-%m-%d"), 
       Time = strftime(date_seq, format="%H:%M:%S")) 
+0

Благодарим за помощь. –

+0

с кодом только первая марка времени наступает на последнюю дату. –

+0

с кодом только первая марка времени подходит для последней даты. –