Как добавить минуты к указанной c строке в R? - PullRequest
0 голосов
/ 16 марта 2020

У меня есть датафрейм, как показано ниже

dput(d1)
structure(list(time = c("12:21", "12:22", "12:45"
), MIN = c(7, 41, 147)), class = "data.frame", row.names = c(943L, 
946L, 947L))

Мне нужно добавить столбцы времени и MIN.Пробовал, как показано ниже.

library(data.table)
d1$MIN <- as.ITime(paste0("00:",d1$MIN*60*60,":00") ### because 147 mins is 2hrs :27 mins

d1$time1 <- d1$time + d1$MIN

Столбец MIN получает NA после преобразование. Я хочу конвертировать только 147 минут в 02:27:00. Но я не могу преобразовать только это конкретное значение, так как as.ITime(d1$MIN*60*60), потому что весь столбец должен иметь только один тип данных. Как преобразовать только это значение в столбце как 02:27:00.

1 Ответ

1 голос
/ 16 марта 2020

Если мы конвертируем time в правильный тип даты и времени, мы можем просто добавить секунды. Т.е.:

d1 <- structure(list(time = c("12:21", "12:22", "12:45"),
                     MIN = c(7, 41, 147)),
                class = "data.frame", row.names = c(943L, 946L, 947L))

Преобразование столбца time в POSIX с использованием strptime:

d1$time <- strptime(d1$time, format="%H:%M") 

Добавление секунд:

d1$time1 <- d1$time + d1$MIN * 60

d1 сейчас :

d1


                   time MIN               time1
943 2020-03-16 12:21:00   7 2020-03-16 12:28:00
946 2020-03-16 12:22:00  41 2020-03-16 13:03:00
947 2020-03-16 12:45:00 147 2020-03-16 15:12:00

Если мы хотим показать только часть времени time1 (или time2), мы можем использовать format(df$time1, format = "%H:%M"), но мы должны делать это только в целях печати и оставить столбец внутри как datetime (например: что произойдет, если мы добавим 23 часа?)

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