我无法将数字转换为时间

时间:2017-07-06 22:30:58

标签: r

这里是数据的结构

enter image description here

我想要做的是将Time的格式更改为POSIXct

这是我尝试过的。

a <- as.POSIXct(power_consumption$Time, "%H:%M:%S")
Error in as.POSIXlt.character(as.character(x), ...) : 
  字符串的格式不够标准明确(The format of the string is not standard enough)

a <- as.POSIXlt(power_consumption$Time, "%H:%M:%S")
Error in as.POSIXlt.character(as.character(x), ...) : 
  字符串的格式不够标准明确(The format of the string is not standard enough) 

a <- strptime(power_consumption$Time, "%H:%M:%S")
head(a)
[1] NA                        "2017-07-07 17:24:00 CST" "2017-07-07 17:25:00 CST" "2017-07-07 17:26:00 CST" "2017-07-07 17:27:00 CST"
[6] "2017-07-07 17:28:00 CST"

我认为结果不对,因为Time的结构只有时间

如何将Time转换为%H:%M:%S?感谢

2 个答案:

答案 0 :(得分:1)

根据定义,POSIX时间格式必须具有与之关联的日期。如果日期无关紧要,您可以按原样继续,并指定origin日期,如果您关心哪个日期将设置为您提供的任意日期。

你可以按照@ HubertL的建议来构建完整的POSIX对象,这似乎是最合乎逻辑的选择。

或者,您可以使用chron::times()将所有内容存储在HH:MM:SS对象中。还有hms::as.hms()

除非您有特定原因需要将日期和时间分开,否则只需构造完整的POSIX日期/时间对象。

此外,我应该补充一点,默认情况下,POSIXct / lt将指定一个日期(在本例中为今天的),如果你没有提供日期,那么所有人都说2017-07-07。

答案 1 :(得分:0)

@Ryan您需要从源重新加载数据框并将每列设置为正确的数据类型。 power_consumption中的所有内容都应该是日期和时间之外的两倍。您将无法进行任何严肃的处理,因为所有数据都表示为因子。

相关问题