4

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

Score Hour Min
10    10    56
23    17    01

我想得到:

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

2 回答 2

7

您可以使用ISOdatetimehourand中的数字转换minPOSIXct对象。但是,POSIXct 对象仅在它还包含年、月和日时才被定义。因此,根据您的需要可以做几件事:

  • 如果您需要一个在图形中正确打印并且可用于算术(加法、减法)的实时对象,则需要使用ISOdatetime. ISOdatetime返回一个所谓的POSIXct对象,它是一个表示时间的 R 对象。然后,您只需对、和ISOdatetime使用固定值。这当然仅适用于您的数据集不跨越多年的情况。yearmonthday
  • 如果您只需要一个字符列Time,您可以POSIXct使用将输出转换为字符串strftime。通过将format参数设置为"%H:%M:00". 但是,在这种情况下,您也可以使用sprintf创建新的字符列而不转换为POSIXct: sprintf("%s:%s:00", drame$Hour, drame$Min)
于 2012-04-10T13:03:13.840 回答
1

您可以使用paste()函数将两列数据合并为一个字符,然后使用 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

如果您更喜欢将此转换为时间戳对象,请尝试使用

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

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

##strptime(mergedData,"%d/%m/%Y %H:%M:%S")
于 2015-04-16T04:57:53.527 回答