Преобразование столбцов чисел в датафрейме в формат времени в R - PullRequest
0 голосов
/ 08 ноября 2018

У меня есть датафрейм, содержащий 2 столбца, включая часы и минуты. Я хочу преобразовать эти столбцы в формат времени. Данные таковы ниже:

dep_time    sched-dep-time
413         300
516         833
2344        1700
644         2230
1233        1800

Хотелось бы получить:

dep_time    sched-dep-time
04:13       03:00
05:16       08:33
23:44       17:00
06:44       22:30
12:33       18:00

Ответы [ 2 ]

0 голосов
/ 08 ноября 2018

Пока я выкладываю ответ, пока не найду правильный дурак:

as.data.frame(sapply( x, function(y)  
                         substr(as.POSIXct(sprintf("%04.0f", y), format='%H%M'), 12, 16)))

# dep_time sched.dep.time
# 1    04:13          03:00
# 2    05:16          08:33
# 3    23:44          17:00
# 4    06:44          22:30
# 5    12:33          18:00

Данные:

x <- read.table(text="dep_time    sched-dep-time
413         300
516         833
2344        1700
644         2230
1233        1800", header=T)
0 голосов
/ 08 ноября 2018

Вот решение:

time <- data.frame(c('413','516','2344','644','1233'), c('300','833','1700','2230','1800'))
colnames(time) <- c("dep_time", "sched-dep-time")

x1 <- as.vector(time[,1])
x2 <- as.vector(time[,2])

mins  <-  substr(x1, nchar(x1)-1, nchar(x1))
hour  <-  substr(x1, 0, nchar(x1)-2)
time[,1]  <-  paste0(hour, ':', mins)

mins  <-  substr(x2, nchar(x2)-1, nchar(x2))
hour  <-  substr(x2, 0, nchar(x2)-2)
time[,2]  <-  paste0(hour, ':', mins)

Результаты:

  dep_time sched-dep-time
1     4:13           3:00
2     5:16           8:33
3    23:44          17:00
4     6:44          22:30
5    12:33          18:00
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...