Как изменить периоды времени с символьных на числовые - PullRequest
0 голосов
/ 11 декабря 2018

У меня есть набор данных с символьной переменной с периодами времени, написанной так:

16 sec
1 min, 35 sec
45 sec
3 min, 42 sec

и т. Д.

Какой самый быстрый способ изменить его начисловая переменная в секундах или минутах ?

Я не могу просто удалить слова min и sec с помощью regexr, потому что есть многозначения переменной только в секундах, без минут, и я не знаю, как отделить их от минут после вменения.

Спасибо за помощь!

Ответы [ 2 ]

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

Использование пакета lubridate

x <- c("16 sec", "1 min, 35 sec", "45 sec", "3 min, 42 sec")

library(lubridate)
as.numeric(as.duration(x))
# [1]  16  95  45 222
0 голосов
/ 11 декабря 2018

Это ваши данные:

df <- data.frame(time.string=c("16 sec", 
                        "1 min, 35 sec", 
                        "45 sec", 
                        "3 min, 42 sec"))

Теперь вы можете преобразовать строки времени в секунды , преобразовав min в *60, , в +и удаление sec.

df$time.expr <- gsub(", ", "+", gsub(" min", "*60", gsub(" sec", "", df$time.string)))

Что даст вам следующий результат:

#     time.expr
#1          16 
#2     1*60+35 
#3          45 
#4     3*60+42 

Теперь вы оцените полученные выражения следующим образом:

df$time.int <- sapply(parse(text=time.expr), eval)

Что даст вам этовыход:

#      time.string time.int
#1          16 sec       16
#2   1 min, 35 sec       95
#3          45 sec       45
#4   3 min, 42 sec      222

Надеюсь, это поможет.

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