使用 chorn 将 chr 转换为时间格式

Convert chr to time format using chorn

我正在尝试将我的日期数据集从 chr 格式转换为时间格式。

这是我的代码:

time<-f1%>%
  mutate(`ymd_hms(Timestamp)`=strftime(f1$`ymd_hms(Timestamp)`, tz="GMT", format = "%H:%M:%S"))%>%
  transform(as.numeric(f1$SpotPrice))
  chron(times=f1$`ymd_hms(Timestamp)`)

显示错误:

Error in chron(., times = f1$`ymd_hms(Timestamp)`) : 
  . and f1$`ymd_hms(Timestamp)` must have equal lengths

如果我评论它

time<-f1%>%
  mutate(`ymd_hms(Timestamp)`=strftime(f1$`ymd_hms(Timestamp)`, tz="GMT", format = "%H:%M:%S"))%>%
  transform(as.numeric(f1$SpotPrice))
#chron(times=f1$`ymd_hms(Timestamp)`)

输出为

'data.frame':   10078 obs. of  4 variables:
 $ InstanceType      : chr  "  a1.2xlarge" "  a1.2xlarge" "  a1.2xlarge" "  a1.4xlarge" ...
 $ ProductDescription: chr  "  Linux/UNIX" "  Red Hat Enterprise Linux" "  SUSE Linux" "  Linux/UNIX" ...
 $ SpotPrice         : num  0.0671 0.1971 0.2171 0.1343 0.2643 ...
 $ ymd_hms(Timestamp): chr  "06:17:23" "06:17:23" "06:17:23" "12:15:54" ...

此外,我将此表扬用作单个变量,如下所示:

f2<-chron(times=DfUse$`ymd_hms(Timestamp)`)

有效并显示输出

 'times' num [1:10078] 06:17:23 06:17:23 06:17:23 12:15:54 12:15:54 ...
 - attr(*, "format")= chr "h:m:s"`

但我想将它与我的整个数据集一起使用,而不是将它单独用作单个变量。

提前致谢。

代码中几乎没有语法错误和改进空间。

  • 虽然左侧的 ymd_hms(Timestamp) = 有效,但您不需要它,因为它会创建一个具有该名称的列。只使用 Timestamp 应该是好的。

  • 不要在 dplyr 管道中使用 $

  • 通常最好将基本 R 函数和 dplyr 函数分开。 transform 以 R 为基数,但您可以使用相同的 mutate 管道将 SpotPrice 转换为数字。

library(dplyr)

time<-f1%>%
  mutate(Timestamp = strftime(ymd_hms(Timestamp), tz="GMT", format = "%H:%M:%S"),
         SpotPrice = as.numeric(SpotPrice),
         Timestamp = chron::chron(times=Timestamp))