Как преобразовать дату и время в столбец продолжительности в Excel в R - PullRequest
0 голосов
/ 31 октября 2019

Я хочу взять столбец в Excel с

1   1/1/19 5:20
2   1/1/19 5:30 
3   1/1/19 5:38 
4   1/1/19 5:52 
5   1/1/19 6:00 
6   1/1/19 6:00
7   1/1/19 6:00 
8   1/1/19 6:15 

в столбец продолжительности с первым числом

0 
.167 
.3
.53
.66
.66
.66
.91

как 10 минут, которые прошли с момента моего первогоу меня есть целая колонка, которую я хочу преобразовать, которая относится к разным дням и разным месяцам, а затем, когда мы достигнем дна, я хочу сказать, что 90000 часов или сколько часов прошло с 5:20 утра 1-го

1 Ответ

2 голосов
/ 31 октября 2019

Пара шагов. Во-первых, некоторые примеры данных:

dat <- read.csv(header = FALSE, stringsAsFactors = FALSE, text="
1/1/19 5:20
1/1/19 5:30
1/1/19 5:38
1/1/19 5:52
1/1/19 6:00
1/1/19 6:00
1/1/19 6:00
1/1/19 6:15")
dat
#            V1
# 1 1/1/19 5:20
# 2 1/1/19 5:30
# 3 1/1/19 5:38
# 4 1/1/19 5:52
# 5 1/1/19 6:00
# 6 1/1/19 6:00
# 7 1/1/19 6:00
# 8 1/1/19 6:15

Во-вторых, преобразуйте его в «правильный» POSIXt (отметка времени) объект:

dat$V1 <- as.POSIXct(dat$V1, format = "%m/%d/%y %H:%M", tz = "UTC")
dat
#                    V1
# 1 2019-01-01 05:20:00
# 2 2019-01-01 05:30:00
# 3 2019-01-01 05:38:00
# 4 2019-01-01 05:52:00
# 5 2019-01-01 06:00:00
# 6 2019-01-01 06:00:00
# 7 2019-01-01 06:00:00
# 8 2019-01-01 06:15:00

Затем найдите различия. Обратите внимание, что разность может возвращать единицы, отличные от секунд, поэтому защитное программирование может заставить , что:

d <- dat$V1 - dat$V1[1]
d
# Time differences in secs
# [1]    0  600 1080 1920 2400 2400 2400 3300

units(d) <- "hours"
d
# Time differences in hours
# [1] 0.0000000 0.1666667 0.3000000 0.5333333 0.6666667 0.6666667 0.6666667
# [8] 0.9166667

или по предложению @ akrun, однократный вызовиз

difftime(dat$V1, dat$V1[1], units="hours")
# Time differences in hours
# [1] 0.0000000 0.1666667 0.3000000 0.5333333 0.6666667 0.6666667 0.6666667
# [8] 0.9166667
...