将数据帧中的小时,分​​钟列转换为时间格式

时间:2012-04-10 12:50:04

标签: r type-conversion time-format datetime-conversion

我有一个包含3列的数据框,包括分钟和小时。 我想将这些列(即分钟和列)转换为时间格式。鉴于drame中的数据:

Score Hour Min
10    10    56
23    17    01

我想得到:

Score Time
10    10:56:00
23    17:01:00

2 个答案:

答案 0 :(得分:7)

您可以使用ISOdatetimehourmin中的数字转换为POSIXct对象。但是,只有在包含年,月和日时才定义POSIXct对象。因此,根据您的需要,可以做几件事:

  • 如果您需要一个在图表中正确打印的实时对象,并且可以用于算术(加法,减法),则需要使用ISOdatetimeISOdatetime返回一个所谓的POSIXct对象,它是一个表示时间的R对象。然后在ISOdatetime中,您只需使用yearmonthday的固定值。只有当您的数据集不跨越多年时,此操作才有效。
  • 如果您只需要字符列Time,则可以使用POSIXctstrftime输出转换为字符串。通过将format参数设置为"%H:%M:00"。但是,在这种情况下,您还可以使用sprintf创建新的字符列,而无需转换为POSIXctsprintf("%s:%s:00", drame$Hour, drame$Min)

答案 1 :(得分:1)

您可以使用 paste()函数将两列数据合并为一个char,然后使用strptime()转换为时间戳

x<-1:6  
##1 2 3 4 5 6
y<-8:13 
## 8 9 10 11 12 13

timestamp <- paste(x,":",y,":00",sep="")
timestamp

将导致

#1:8:00 2:9:00 3:10:00 4:11:00 5:12:00 6:13:00

如果您希望将其转换为timestamp对象,请尝试使用

strptime(mergedData,"%H:%M:%S") 
## uses current date by default

如果你碰巧在另一列中有Date,请使用paste()制作一个char格式化日期,并使用下面的日期来获取日期时间

##strptime(mergedData,"%d/%m/%Y %H:%M:%S")