R: преобразуйте переменную «difftime» в секундах в переменную «difftime» в днях

#r #time

Вопрос:

У меня есть следующий вектор x класса difftime , выражающий некоторые промежутки времени в секундах:

 > x
Time differences in secs
[1]       0       0 7948800       0

> class(x)
[1] "difftime"
 

Я хотел бы преобразовать переменную таким образом, чтобы выразить каждое значение в днях, а не в секундах

Как я мог его получить?

Комментарии:

1. Как вы получаете x ценность ? difftime функция имеет возможность установки units = "days" .

Ответ №1:

Либо используйте units= , как предложил Ронакшах,

 x <- difftime(Sys.time()   c(0, 100, 3*86400), Sys.time(), units = "days")
x
# Time differences in days
# [1] 0.000000000 0.001157407 3.000000000
 

или измените единицы измерения постфактум.

 x <- difftime(Sys.time()   c(0, 100, 3*86400), Sys.time())
x
# Time differences in secs
# [1]      0    100 259200
units(x) <- "days"
x
# Time differences in days
# [1] 0.000000000 0.001157407 3.000000000
 

Ответ №2:

Используйте as.numeric , а затем преобразуйте в difftime, используя units="days" и то, и другое. Если числовой вывод в порядке, то опустите as.difftime в конце конвейера.

 # test input
secs <- as.difftime(rep(7948800, 3), units = "secs")

secs |> as.numeric(units = "days") |> as.difftime(units = "days")
## Time differences in days
## [1] 92 92 92