Удалите секунды из некоторых наблюдений для работы в формате HM с помощью R

#r #time #seconds

#r #время #секунды

Вопрос:

У меня есть столбец с именем «время», в котором некоторые наблюдения указаны в «часах: минутах: секундах», а другие — только в «часах: минутах». Я хотел бы удалить секунды и оставить только часы и минуты. До сих пор я загрузил lubridate пакет и попробовал:

 format(data$time ,format = "%H:%M")
 

но никаких изменений не происходит.

И с:

 data$time <- hm(data$time)
 

все наблюдения с h: m: s становятся NAs

Что мне делать?

Комментарии:

1. Ваша проблема, скорее всего, возникает из-за неспособности а) понять, что применение функции не изменяет ее аргументы, если вы не присваиваете значения обратно, и б) неясности в отношении того, что вы намеревались делать с результатами.

Ответ №1:

Вы можете использовать parse_date_time from lubridate для приведения времени в POSIXct формат, а затем использовать format для сохранения необходимой вам информации.

 data <- data.frame(time = c('10:04:00', '14:00', '15:00', '12:34:56'))
data$time1 <- format(lubridate::parse_date_time(x, c('HMS', 'HM')), '%H:%M')
data

#      time time1
#1 10:04:00 10:04
#2    14:00 14:00
#3    15:00 15:00
#4 12:34:56 12:34
 

Комментарии:

1. Было бы очень полезно провести четкое различие между различными классами этих столбцов. Форматированный результат может вести себя по-другому, чем столбец даты и времени.