我有一个数据文件,其中我必须按时处理数据列,即小时和分钟,但是存储的数据是1900,代表19h00',1845代表18h45',但是930和455也有930 4h5,所以现在我不知道如何处理相同的表格,如果我只想分配小时数。我该怎么办?
答案 0 :(得分:1)
没有分钟的小时数可以计算为:
s <- c(1900, 1845, 930, 930, 455) # input
s %/% 100
## [1] 19 18 9 9 4
或小时数(使用小数小时表示分钟数)为:
s %/% 100 + (s %% 100) / 60
## [1] 19.000000 18.750000 9.500000 9.500000 4.916667
另一种方法是将s
转换为时间"times"
对象,并从中提取小时或小时和分钟。下面的最后一种选择是使用"times"
对象存储为一天的一小部分的事实。
library(chron)
tt <- times(sub("(..)$", ":\\1:00", s)); tt
## [1] 19:00:00 18:45:00 09:30:00 09:30:00 04:55:00
# alternative
times((s %/% 100) / 24 + (s %% 100) / (24 * 60))
## [1] 19:00:00 18:45:00 09:30:00 09:30:00 04:55:00
hours(tt)
## [1] 19 18 9 9 4
minutes(tt)
## [1] 0 45 30 30 55
hours(tt) + minutes(tt) / 60
## [1] 19.000000 18.750000 9.500000 9.500000 4.916667
24 * as.numeric(tt)
## [1] 19.000000 18.750000 9.500000 9.500000 4.916667