我有一个包含以下数字的表:
Time in Hours Used
1:05:34
1:04:45
1:12:04
34:17
43:35
...五十五次观察
如何创建新列,其中以小时为单位的时间列为分钟。我知道我可以将它乘以24 * 60,但出于某种原因,当我这样做时,它说因素不能成倍增加。
我尝试了其他程序,例如chronos
,但是他们要求我输入每一个值并为所有55个观察值创建一个值向量。我怎样才能将这些值中的每一个乘以24 * 60来得到它们?
答案 0 :(得分:1)
我们可以使用guess_formats
中的lubridate
来获取数据集列中的多种格式,并使用parse_date_time
中的格式转换为日期时间类。我们使用%H:%M:%S
提取时间部分(format
),使用times
中的times
转换为chron
类,然后在转换后乘以24 * 60到numeric
。
library(chron)
library(lubridate)
as.numeric(times(format(parse_date_time(df1[,1],guess_formats(df1[,1],
c('hms', 'ms'))), '%H:%M:%S')))*24*60
df1 <- structure(list(timeinhours = structure(c(2L, 1L, 3L, 4L, 5L),
.Label = c("1:04:45", "1:05:34", "1:12:04", "34:17", "43:35"),
class = "factor")), .Names = "timeinhours", row.names = c(NA, -5L),
class = "data.frame")