У меня есть значения в формате «221559460», где первые два - час, остальные два - минуты, а следующие цифры - в миллисекундах. Есть ли какой-либо метод быстрого доступа для преобразования в формат временных рядов без добавления вручную «:» в значение и вычисления второго из миллисекундных цифр в R?Преобразование значения в формат времени в R
ответ
Я думаю, что вы не можете избежать некоторых синтаксический здесь из-за не имея «секунд» часть, но это можно сделать довольно легко, даже с простым регулярным выражением:
> sub(pattern = '([0-9]{2})([0-9]{2})([0-9]{2})([0-9]*)',
+ replacement = '\\1:\\2:\\3.\\4',
+ x = 221559460)
[1] "22:15:59.460"
> strptime(
+ x = sub(pattern = '([0-9]{2})([0-9]{2})([0-9]{2})([0-9]*)',
+ replacement = '\\1:\\2:\\3.\\4',
+ x = 221559460),
+ format = '%H:%M:%OS')
[1] "2015-12-11 22:15:59 PST"
Обновленный ответ, основанный на комментарий ниже:
> options(digits.secs = 3)
> strptime(
+ x = sub(pattern = '([0-9]{8})_([0-9]{2})([0-9]{2})([0-9]{2})([0-9]*)',
+ replacement = '\\1 \\2:\\3:\\4.\\5',
+ x = '20150819_221559460'),
+ format = '%Y%m%d %H:%M:%OS')
[1] "2015-08-19 22:15:59.46 PDT"
Обновление для векторизованного Например:
> df <- data.frame(timestamp = paste('20150819', 221559460 + round(runif(10) * 100), sep = '_'))
> strptime(sub('([0-9]{3})$', '.\\1', df$timestamp),'%Y%m%d_%H%M%OS')
[1] "2015-08-19 22:15:59.517 PDT" "2015-08-19 22:15:59.550 PDT"
[3] "2015-08-19 22:15:59.538 PDT" "2015-08-19 22:15:59.493 PDT"
[5] "2015-08-19 22:15:59.484 PDT" "2015-08-19 22:15:59.549 PDT"
[7] "2015-08-19 22:15:59.510 PDT" "2015-08-19 22:15:59.462 PDT"
[9] "2015-08-19 22:15:59.466 PDT" "2015-08-19 22:15:59.474 PDT"
Мое фактическое значение было «20150819_221559460», где первая часть в yy-mm-dd, которую я удалил, чтобы упростить. Как вы видите дату на выходе, могу ли я использовать исходное значение данных? – Anish
@ daroczig Просто вызов 'strptime (" 221559460 ", format ="% H% M% S ")' также дает тот же результат. OP также нуждается в дробной части секунды. Вероятно, 'options (digits.secs = 3)' может помочь. –
@ daroczig нам не хватает значения в миллисекундах. – Anish
- 1. Преобразование формата времени в R
- 2. преобразование времени в R
- 3. Преобразование времени GPS в R
- 4. Преобразование последовательных числовых данных в формат времени в R
- 5. преобразование числового поля в формат времени в R
- 6. Преобразование строки в формат времени
- 7. Преобразование строки в формат времени
- 8. Преобразование строки в формат времени
- 9. Преобразование секунд в формат времени
- 10. Преобразование в формат времени только
- 11. Преобразование строки формата времени в формат времени
- 12. Преобразование даты/времени в правильный формат R с использованием chron()
- 13. преобразование даты в метку времени в R
- 14. Формат времени и преобразование
- 15. Преобразование списка времени в формат ISO Python
- 16. JMeter: Преобразование значения времени штампа в формат даты
- 17. Преобразование времени в длинный формат в AngularJS
- 18. R: преобразование формата времени JSON в POSIX
- 19. преобразование в формат данных в формате R
- 20. чтение специального значения времени в R
- 21. R Преобразование даты времени
- 22. dmesg преобразование метки времени в человеческий формат
- 23. SQL- Преобразование varchar (8) в формат времени
- 24. Преобразование времени UTC в формат ISO 8601
- 25. Преобразование даты и времени в формат г
- 26. преобразование строки в формат даты и времени
- 27. Преобразование времени в какой-то формат
- 28. Преобразование метки времени в другой формат
- 29. Преобразование времени unix в человекообразный формат
- 30. Преобразование целочисленного числа в формат времени
что именно ваш ожидаемый выход – Bg1850
«22: 15: 59.460» - ожидаемый результат, а R идентифицирует его как время. – Anish