используя difftime в R из одного столбца - PullRequest
0 голосов
/ 20 декабря 2018

Здравствуйте, вы можете помочь мне с разницей в (часы) в R из одного столбца.Я использую только базовый пакет R. Я хотел бы создать новый столбец с часами, чтобы столбец выглядел как

hours<-c(0,24,23,21,31,26,28)

time<-c('10. 4. 2018 10:16:11', 
'11. 4. 2018 10:16:15', 
'12. 4. 2018 10:13:31',
'13. 4. 2018 8:16:31', 
'14. 4. 2018 15:16:21',
'15. 4. 2018 17:16:31', 
'16. 4. 2018 19:15:31')

У меня есть один столбец (время), и я хотел бы создать новый столбец (часы)

спасибо

Ответы [ 2 ]

0 голосов
/ 21 декабря 2018

Другой способ заключается в следующем.

Первое приведение к классу POSIXct.

time <- as.POSIXct(time, format = "%d. %m. %Y %H:%M:%S")

Теперь используйте difftime, это даст результат в необходимых единицах.

c(0, difftime(time[-1], time[-length(time)]))
#[1]  0.00000 24.00111 23.95444 22.05000 30.99722 26.00278 25.98333

ОкругленноеВывод прост в получении.

round(c(0, difftime(time[-1], time[-length(time)])))
#[1]  0 24 24 22 31 26 26
0 голосов
/ 21 декабря 2018

Улучшение Подход Сотоса ,

c(0, round(diff(as.POSIXct(time, format = '%d. %m. %Y %H:%M:%S'), units = "hours")))

приближается к ожидаемому результату ОП

[1]  0 24 24 22 31 26 26

Данные

time <- c(
  '10. 4. 2018 10:16:11',
  '11. 4. 2018 10:16:15',
  '12. 4. 2018 10:13:31',
  '13. 4. 2018 8:16:31',
  '14. 4. 2018 15:16:21',
  '15. 4. 2018 17:16:31',
  '16. 4. 2018 19:15:31'
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...