Генерация столбца временных меток из столбца чисел Возвращает NA в середине и конце столбца - PullRequest
1 голос
/ 23 марта 2019

У меня возникли проблемы с преобразованием столбца чисел в формат времени. Который я бы хотел использовать в качестве эталона для временных рядов. Столбец увеличивается с интервалом в 3, что соответствует минутам. Я хочу преобразовать его в метку времени, с или без даты. Я пробовал lubridate библиотека с использованием hms(df$V1, as.POSIXct(df$V1, format=%H:%M) и других версий, chron библиотека с использованием chron(dates = NULL, times = df$V1, format = c(NULL, "m"), "h:m"), хотя я почти уверен, что не понимаю правильный формат , strptime с использованием strptime(df$V1, format="%M"), а также format(strptime(test$rn,format = "%M"), format = "%H:%M") и as.Date . Некоторые из них я получил на работу, но когда они это сделали, я постоянно сталкивался с той же проблемой, что продемонстрировал один такой пример:

library(data.table)
df<-as.data.table(seq(1,801,by=3))
strptime(df$V1, format="%M")

Что возвращает:

[1] "2019-03-22 00:00:00 EDT" "2019-03-22 00:03:00 EDT"
[3] "2019-03-22 00:06:00 EDT" "2019-03-22 00:09:00 EDT"
[5] "2019-03-22 00:12:00 EDT" "2019-03-22 00:15:00 EDT"
[7] "2019-03-22 00:18:00 EDT" "2019-03-22 00:21:00 EDT"
[9] "2019-03-22 00:24:00 EDT" "2019-03-22 00:27:00 EDT"
[11] "2019-03-22 00:30:00 EDT" "2019-03-22 00:33:00 EDT"
[13] "2019-03-22 00:36:00 EDT" "2019-03-22 00:39:00 EDT"
[15] "2019-03-22 00:42:00 EDT" "2019-03-22 00:45:00 EDT"
[17] "2019-03-22 00:48:00 EDT" "2019-03-22 00:51:00 EDT"
[19] "2019-03-22 00:54:00 EDT" "2019-03-22 00:57:00 EDT"
[21] NA                        NA                       
[23] NA                        NA                       
[25] NA                        NA                       
[27] NA                        NA                       
[29] NA                        NA                       
[31] NA                        NA                       
[33] NA                        NA                       
[35] "2019-03-22 00:10:00 EDT" "2019-03-22 00:10:00 EDT"
[37] "2019-03-22 00:10:00 EDT" "2019-03-22 00:11:00 EDT"
[39] "2019-03-22 00:11:00 EDT" "2019-03-22 00:11:00 EDT"
[41] "2019-03-22 00:12:00 EDT" "2019-03-22 00:12:00 EDT"
[43] "2019-03-22 00:12:00 EDT" "2019-03-22 00:12:00 EDT"
[45] "2019-03-22 00:13:00 EDT" "2019-03-22 00:13:00 EDT"
[47] "2019-03-22 00:13:00 EDT" "2019-03-22 00:14:00 EDT"
[49] "2019-03-22 00:14:00 EDT" "2019-03-22 00:14:00 EDT"
[51] "2019-03-22 00:15:00 EDT" "2019-03-22 00:15:00 EDT"
[53] "2019-03-22 00:15:00 EDT" "2019-03-22 00:15:00 EDT"
[55] "2019-03-22 00:16:00 EDT" "2019-03-22 00:16:00 EDT"
[57] "2019-03-22 00:16:00 EDT" "2019-03-22 00:17:00 EDT"
[59] "2019-03-22 00:17:00 EDT" "2019-03-22 00:17:00 EDT"
[61] "2019-03-22 00:18:00 EDT" "2019-03-22 00:18:00 EDT"
[63] "2019-03-22 00:18:00 EDT" "2019-03-22 00:18:00 EDT"
[65] "2019-03-22 00:19:00 EDT" "2019-03-22 00:19:00 EDT"
[67] "2019-03-22 00:19:00 EDT" "2019-03-22 00:20:00 EDT"
[69] "2019-03-22 00:20:00 EDT" "2019-03-22 00:20:00 EDT"
[71] "2019-03-22 00:21:00 EDT" "2019-03-22 00:21:00 EDT"
[73] "2019-03-22 00:21:00 EDT" "2019-03-22 00:21:00 EDT"
[75] "2019-03-22 00:22:00 EDT" "2019-03-22 00:22:00 EDT"
[77] "2019-03-22 00:22:00 EDT" "2019-03-22 00:23:00 EDT"
[79] "2019-03-22 00:23:00 EDT" "2019-03-22 00:23:00 EDT"
[81] "2019-03-22 00:24:00 EDT" "2019-03-22 00:24:00 EDT"
[83] "2019-03-22 00:24:00 EDT" "2019-03-22 00:24:00 EDT"
[85] "2019-03-22 00:25:00 EDT" "2019-03-22 00:25:00 EDT"
[87] "2019-03-22 00:25:00 EDT" "2019-03-22 00:26:00 EDT"
[89] "2019-03-22 00:26:00 EDT" "2019-03-22 00:26:00 EDT"
[91] "2019-03-22 00:27:00 EDT" "2019-03-22 00:27:00 EDT"
[93] "2019-03-22 00:27:00 EDT" "2019-03-22 00:27:00 EDT"
[95] "2019-03-22 00:28:00 EDT" "2019-03-22 00:28:00 EDT"
[97] "2019-03-22 00:28:00 EDT" "2019-03-22 00:29:00 EDT"
[99] "2019-03-22 00:29:00 EDT" "2019-03-22 00:29:00 EDT"
[101] "2019-03-22 00:30:00 EDT" "2019-03-22 00:30:00 EDT"
[103] "2019-03-22 00:30:00 EDT" "2019-03-22 00:30:00 EDT"
[105] "2019-03-22 00:31:00 EDT" "2019-03-22 00:31:00 EDT"
[107] "2019-03-22 00:31:00 EDT" "2019-03-22 00:32:00 EDT"
[109] "2019-03-22 00:32:00 EDT" "2019-03-22 00:32:00 EDT"
[111] "2019-03-22 00:33:00 EDT" "2019-03-22 00:33:00 EDT"
[113] "2019-03-22 00:33:00 EDT" "2019-03-22 00:33:00 EDT"
[115] "2019-03-22 00:34:00 EDT" "2019-03-22 00:34:00 EDT"
[117] "2019-03-22 00:34:00 EDT" "2019-03-22 00:35:00 EDT"
[119] "2019-03-22 00:35:00 EDT" "2019-03-22 00:35:00 EDT"
[121] "2019-03-22 00:36:00 EDT" "2019-03-22 00:36:00 EDT"
[123] "2019-03-22 00:36:00 EDT" "2019-03-22 00:36:00 EDT"
[125] "2019-03-22 00:37:00 EDT" "2019-03-22 00:37:00 EDT"
[127] "2019-03-22 00:37:00 EDT" "2019-03-22 00:38:00 EDT"
[129] "2019-03-22 00:38:00 EDT" "2019-03-22 00:38:00 EDT"
[131] "2019-03-22 00:39:00 EDT" "2019-03-22 00:39:00 EDT"
[133] "2019-03-22 00:39:00 EDT" "2019-03-22 00:39:00 EDT"
[135] "2019-03-22 00:40:00 EDT" "2019-03-22 00:40:00 EDT"
[137] "2019-03-22 00:40:00 EDT" "2019-03-22 00:41:00 EDT"
[139] "2019-03-22 00:41:00 EDT" "2019-03-22 00:41:00 EDT"
[141] "2019-03-22 00:42:00 EDT" "2019-03-22 00:42:00 EDT"
[143] "2019-03-22 00:42:00 EDT" "2019-03-22 00:42:00 EDT"
[145] "2019-03-22 00:43:00 EDT" "2019-03-22 00:43:00 EDT"
[147] "2019-03-22 00:43:00 EDT" "2019-03-22 00:44:00 EDT"
[149] "2019-03-22 00:44:00 EDT" "2019-03-22 00:44:00 EDT"
[151] "2019-03-22 00:45:00 EDT" "2019-03-22 00:45:00 EDT"
[153] "2019-03-22 00:45:00 EDT" "2019-03-22 00:45:00 EDT"
[155] "2019-03-22 00:46:00 EDT" "2019-03-22 00:46:00 EDT"
[157] "2019-03-22 00:46:00 EDT" "2019-03-22 00:47:00 EDT"
[159] "2019-03-22 00:47:00 EDT" "2019-03-22 00:47:00 EDT"
[161] "2019-03-22 00:48:00 EDT" "2019-03-22 00:48:00 EDT"
[163] "2019-03-22 00:48:00 EDT" "2019-03-22 00:48:00 EDT"
[165] "2019-03-22 00:49:00 EDT" "2019-03-22 00:49:00 EDT"
[167] "2019-03-22 00:49:00 EDT" "2019-03-22 00:50:00 EDT"
[169] "2019-03-22 00:50:00 EDT" "2019-03-22 00:50:00 EDT"
[171] "2019-03-22 00:51:00 EDT" "2019-03-22 00:51:00 EDT"
[173] "2019-03-22 00:51:00 EDT" "2019-03-22 00:51:00 EDT"
[175] "2019-03-22 00:52:00 EDT" "2019-03-22 00:52:00 EDT"
[177] "2019-03-22 00:52:00 EDT" "2019-03-22 00:53:00 EDT"
[179] "2019-03-22 00:53:00 EDT" "2019-03-22 00:53:00 EDT"
[181] "2019-03-22 00:54:00 EDT" "2019-03-22 00:54:00 EDT"
[183] "2019-03-22 00:54:00 EDT" "2019-03-22 00:54:00 EDT"
[185] "2019-03-22 00:55:00 EDT" "2019-03-22 00:55:00 EDT"
[187] "2019-03-22 00:55:00 EDT" "2019-03-22 00:56:00 EDT"
[189] "2019-03-22 00:56:00 EDT" "2019-03-22 00:56:00 EDT"
[191] "2019-03-22 00:57:00 EDT" "2019-03-22 00:57:00 EDT"
[193] "2019-03-22 00:57:00 EDT" "2019-03-22 00:57:00 EDT"
[195] "2019-03-22 00:58:00 EDT" "2019-03-22 00:58:00 EDT"
[197] "2019-03-22 00:58:00 EDT" "2019-03-22 00:59:00 EDT"
[199] "2019-03-22 00:59:00 EDT" "2019-03-22 00:59:00 EDT"
[201] NA                        NA                       
[203] NA                        NA                       
[205] NA                        NA                       
[207] NA                        NA                       
[209] NA                        NA                       
[211] NA                        NA                       
[213] NA                        NA                       
[215] NA                        NA                       
[217] NA                        NA                       
[219] NA                        NA                       
[221] NA                        NA                       
[223] NA                        NA                       
[225] NA                        NA                       
[227] NA                        NA                       
[229] NA                        NA                       
[231] NA                        NA                       
[233] NA                        NA                       
[235] NA                        NA                       
[237] NA                        NA                       
[239] NA                        NA                       
[241] NA                        NA                       
[243] NA                        NA                       
[245] NA                        NA                       
[247] NA                        NA                       
[249] NA                        NA                       
[251] NA                        NA                       
[253] NA                        NA                       
[255] NA                        NA                       
[257] NA                        NA                       
[259] NA                        NA                       
[261] NA                        NA                       
[263] NA                        NA                       
[265] NA                        NA                       
[267] NA                        NA    

Как видно, производительность работает хорошо, пока не достигнет отметки 1 час, а затем возвращает NA для нескольких значений. Затем он возобновляет генерацию значений, но значения возвращаются каждое минутное значение 3 раза вместо одного значения каждые 3 минуты. Он прекращает генерировать значения вообще после 200-го значения. Кроме того, он не генерирует значение для часа после того, как он увеличивается после отметки в один час. У всех подходов, которые я получил к работе, была та же самая проблема. Любая помощь будет принята с благодарностью.

1 Ответ

1 голос
/ 23 марта 2019

Задумывались ли вы об использовании функции seq.POSIXt в библиотеке R's base?

Функция принимает следующее: seq.POSIXt(from, to, by, length.out = NULL, along.with = NULL, ...)

Возможно, я не понимаю, каковы ваши from и to, но я считаю, что следующее должно работать.

library(data.table)
fromDate <- as.POSIXct('2018-03-22')
toDate <- as.POSIXct('2018-03-23')

df<-as.data.table(seq.POSIXt(fromDate, toDate, by = '3 min'))

Настройте значения fromDate и toDate так, как вам удобно. Если вы хотите увеличить только на фиксированное количество позиций, я могу изменить это. В противном случае это будет работать невероятно быстро!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...