Как создать последовательность дат и времени с определенной датой / временем начала в R - PullRequest
0 голосов
/ 02 октября 2018

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

    CH_1   CH_2  CH_3  CH_4           date_time
1 -10096 -11940 -9340 -9972 2018-07-24 10:45:01
2 -10088 -11964 -9348 -9960                <NA>
3 -10084 -11940 -9332 -9956                <NA>
4 -10088 -11956 -9340 -9960                <NA>
5 -10084 -11944 -9332 -9976                <NA>
6 -10076 -11940 -9340 -9948                <NA>
7 -10088 -11956 -9352 -9960                <NA>
8 -10084 -11944 -9348 -9980                <NA>
9 -10076 -11964 -9348 -9976                <NA>
0 -10076 -11956 -9348 -9964                <NA>

Я хотел бы последовательно генерировать даты и время для столбца date_time, увеличивая на 1 секунду пока не заполнен информационный кадр.(т.е. следующая дата / время должны быть 2018-07-24 10: 45: 02 ).Предполагается, что это будет воспроизводимо для нескольких наборов данных, и число строк, которые необходимо заполнить, не всегда известно, но дата / время начала всегда будут присутствовать в этой первой ячейке.

Я знаю, что решение, скорее всего, является вероятнымв seq.Date (или аналогичном), но проблема в том, что я не всегда знаю дату / время окончания, чего требуют большинство примеров, которые я нашел.Любая помощь будет оценена!

Ответы [ 2 ]

0 голосов
/ 02 октября 2018

Вот решение tidyverse, использующее данные примера Zygmunt Zawadzki:

library(lubridate)
library(tidyverse)

df %>% mutate(date_time = date_time[1] + seconds(row_number()-1)) 

Вывод:

             date_time
1  2018-01-01 00:00:00
2  2018-01-01 00:00:01
3  2018-01-01 00:00:02
4  2018-01-01 00:00:03
5  2018-01-01 00:00:04
6  2018-01-01 00:00:05
7  2018-01-01 00:00:06
8  2018-01-01 00:00:07
9  2018-01-01 00:00:08
10 2018-01-01 00:00:09
11 2018-01-01 00:00:10

Данные:

df <- data.frame(date_time = c(as.POSIXct("2018-01-01 00:00:00"), rep(NA,10)))
0 голосов
/ 02 октября 2018

Нет необходимости в смазке, просто код R:

x <- data.frame(date = c(as.POSIXct("2018-01-01 00:00:00"), rep(NA,10)))
startDate <- x[["date"]][1]
x[["date2"]] <- startDate + (seq_len(nrow(x)) - 1)
x
#         date               date2
# 1  2018-01-01 2018-01-01 00:00:00
# 2        <NA> 2018-01-01 00:00:01
# 3        <NA> 2018-01-01 00:00:02
# 4        <NA> 2018-01-01 00:00:03
# 5        <NA> 2018-01-01 00:00:04
# 6        <NA> 2018-01-01 00:00:05
# 7        <NA> 2018-01-01 00:00:06
# 8        <NA> 2018-01-01 00:00:07
# 9        <NA> 2018-01-01 00:00:08
# 10       <NA> 2018-01-01 00:00:09
# 11       <NA> 2018-01-01 00:00:10
...