我有一个包含3列的数据框,包括分钟和小时。
我想将这些列(即分钟和列)转换为时间格式。鉴于drame
中的数据:
Score Hour Min
10 10 56
23 17 01
我想得到:
Score Time
10 10:56:00
23 17:01:00
答案 0 :(得分:7)
您可以使用ISOdatetime
将hour
和min
中的数字转换为POSIXct
对象。但是,只有在包含年,月和日时才定义POSIXct对象。因此,根据您的需要,可以做几件事:
ISOdatetime
。 ISOdatetime
返回一个所谓的POSIXct
对象,它是一个表示时间的R对象。然后在ISOdatetime
中,您只需使用year
,month
和day
的固定值。只有当您的数据集不跨越多年时,此操作才有效。 Time
,则可以使用POSIXct
将strftime
输出转换为字符串。通过将format
参数设置为"%H:%M:00"
。但是,在这种情况下,您还可以使用sprintf
创建新的字符列,而无需转换为POSIXct
:sprintf("%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")