У меня есть столбец в R на моем наборе данных со значениями, которые были преобразованы в то, что я считаю временной декальной дроби, основанной на днях. Я использую этот сайт в качестве справки: http://www.calculatorsoup.com/calculators/time/decimal-to-time-calculator.phpПреобразование временной десятичной/дробной части, представляющей дни до фактического времени в R?
Каких преобразований 0.3408565 дней соответствует времени 8:10:50, выполнив следующие действия:
0.3408565 * 24 hours/day = 8.180555544 = 8 hours
0.180555544 * 60 minutes = 10.83333264 = 10 minutes
0.83333264 * 60 seconds = 49.9999584 = 50 seconds
Как вы можете увидеть его извлечение остальное и делать дальнейшее умножение, однако я не уверен, как я мог реализовать процесс внутри R. Я хочу преобразовать все значения в моем столбце, используя это, чтобы я мог заменить 0.3408565, 0.3864468, 0.4400231 и т. д. с их фактическими сопоставлениями времени 8 : 10: 50, 09:16:29, 10:33:38 соответственно. Похоже, что это делается и в Excel.
Я пытался писать свою собственную функцию, которая на английском языке делает:
convertTime <- function(x)
{
x * 60 = Hour
x2 * 24 = Min
x3 * 24 = Sec
hourChar <- as.character(Hour)
minChar <- as.character(Min)
secChar <- as.character(Sec)
paste(hourChar, minChar, secChar, sep=":")
}
С й будучи 0.3408565, но это, конечно, не извлекает оставшуюся часть. Я мог бы серьезно переубедить его, но я хочу перебрать все значения в столбце, используя каждое значение в качестве ввода для преобразования.
Наконец, я просмотрел такие пакеты, как «lubridate», но не могу найти ничего, что имеет отношение к моей проблеме.
Я также просмотрел здесь свою конкретную ситуацию, но не смог найти что-либо действительно актуальное для моей проблемы. Есть ли какой-нибудь пакет или решение, которое могло бы мне помочь?
EDIT: Я хочу сказать, что оба ответа отлично работают для всех, у кого есть такая проблема, спасибо вам обоим!
Я только что попробовал это решение, и он отлично работает для моей ситуации, спасибо вам столько! Если бы вы знали, как можно изменить дату, не задав еще вопрос? Снова у меня есть дата (41641), которую я могу конвертировать до 02/01/2014, что, я думаю, 41641 - это количество дней с 01.01.1900? – IAmZingy
'as.Date (41641, origin =" 1900-01-01 ")' –
Это идеальное спасибо за вашу помощь, мне просто нужно преобразовать его в британское время, которое я выясню, как это сделать! Еще раз спасибо вам большое! – IAmZingy