У меня есть фрейм данных с символьными векторами в формате с днями, часами, минутами и секундами, представленными как "1d 3h 2m 28s":
> head(status[5])
Duration
1 0d 20h 46m 31s
2 2d 0h 13m 54s
3 2d 0h 13m 53s
4 0d 9h 53m 38s
5 5d 12h 17m 37s
6 0d 10h 21m 19s
Я могу разобрать его с помощью regex для компонентов, но не могу придумать хороший способ преобразовать продолжительность в секунды. Я могу gsub
векторы в выражение, которое приведет к количеству секунд, но упираюсь в блок при использовании eval
для результатов.
Я мог бы сделать что-то похожее на то, что было рекомендовано здесь, но надеялся пойти по пути regex - даже если он не самый эффективный. Я имею дело только с разбором множества небольших HTML-таблиц.
status$duration <- gsub("(\\d+)d\\s+(\\d+)h\\s+(\\d+)m\\s+(\\d+)s.*","\\1*86400+\\2*3600+\\3*60+\\4",as.character(status[,5]),perl=TRUE)
Вышеприведенное выражение создает выражение, которое может быть оценено, но я что-то упускаю, когда дело доходит до parse(text=status$duration)
и последующего eval
.
В perl я привык брать "захваченные переменные" в выражении regex и сразу использовать их, а не только в строке замены. Есть ли подобные возможности в R?
Спасибо, возможно, я упускаю что-то очень простое из-за туманности ума.