Создайте столбец десятичного часа из получасовой даты и времени - PullRequest
0 голосов
/ 09 ноября 2018

Я хотел бы создать новый столбец, содержащий десятичный час, с использованием получасового столбца даты и времени в формате POSIXct.

По сути, мой столбец даты и времени выглядит так: "2015-09-01 09:00:00, 2015-09-01 09:30:00, 2015-09-01 10:00:00" и т. Д. *

Мне бы хотелось, чтобы новый столбец десятичных часов выглядел так: "9, 9,5, 10" и т.д ...

Спасибо!

Ответы [ 2 ]

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

difftime - отличная маленькая функция, которая, если вы объедините здесь с trunc, даст вам ответ:

x <- as.POSIXct(c("2015-09-01 09:00:00", "2015-09-01 09:30:00", "2015-09-01 10:00:00"))

difftime(x, trunc(x, units="days"), units="hours")
#Time differences in hours
#[1]  9.0  9.5 10.0

Очевидно, что это аккуратно и легко изменить, если вы хотите, чтобы ваш вывод units= в "mins" "days" и т.д ...

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

Я использовал один из твоих времен в качестве примера.

time <- as.POSIXct("2015-09-01 09:30:00", tz = "GMT")
(as.numeric(time) %% 86400) / 3600
[1] 9.5

Код обеспечивает желаемый результат.

Почему, смотрите ответ Мэтью Лундберга по ссылке: Время извлечения из POSIXct .

...