Как использовать seq () для создания столбца даты / времени с шагом в миллисекунды (децисекунды) - PullRequest
0 голосов
/ 19 октября 2018

Мой фрейм данных (df) выглядит следующим образом:

ID  CH_1   CH_2  CH_3  CH_4             date_time
1 -10096 -11940 -9340 -9972 2018-07-24 10:45:01.1
2 -10088 -11964 -9348 -9960                  <NA>
3 -10084 -11940 -9332 -9956                  <NA>
4 -10088 -11956 -9340 -9960                  <NA>

Последний столбец, date_time , закодирован как формат POSIXct.Что мне нужно сделать, так это заполнить оставшуюся часть моего столбца данных (он довольно большой) с увеличением в децисекундах или 100 миллисекундах, чтобы следующий столбец выглядел следующим образом, и так далее ...

ID  CH_1   CH_2  CH_3  CH_4             date_time
1 -10096 -11940 -9340 -9972 2018-07-24 10:45:01.1
2 -10088 -11964 -9348 -9960 2018-07-24 10:45:01.2
3 -10084 -11940 -9332 -9956 2018-07-24 10:45:01.3
4 -10088 -11956 -9340 -9960 2018-07-24 10:45:01.4

Я попытался использовать следующее,

startDate <- df[["date_time"]][1]
datasetname2$date_time = as.POSIXct(startDate) + seq.POSIXt(datasetname2[6,1], 
units="seconds", by=.1)

, но оно возвращает ошибку (см. Ниже)

Error in seq.POSIXt(datasetname2[6, 1], units = "seconds", by = 0.1) :
'from' must be a "POSIXt" object

1 Ответ

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

Это может работать для вас:

library(lubridate)
df <- data.frame(ID = 1:4, 
                 CH_1 = rep(c(-10096, -10088, -10084, -10088), 4),
                 CH_2 = rep(c(-11940, -11964, -11940, -11956), 4),
                 date_time = c("2018-07-24 10:45:01.1", rep(NA, 15)))

df$date_time <- as.POSIXct(df$date_time, format= "%F %H:%M:%OS2", tz = "UTC")
df$date_time <- seq(from = df$date_time[1], to = df$date_time[1] + (nrow(df)-1)*0.1, by = 0.10)
format(df$date_time, "%OS3")
...