我正在尝试将数值转换为时间和日期。我正在使用一个数据集,所以如果你应该显示一个使用数据集的例子,我将不胜感激。
这里有一些例子,将93537转换成09:35:57(时:分:秒)。另外,我需要将22-07-03转换成22 - 07 - 03(年:分:日)。
我将在下面添加我的代码示例:
CPLF_data$HMS <- substr(as.POSIXct(sprintf("%04.0f", CPLF_data$StartTime), format='%H%M%S'), 12, 16)
CPLF_data$YMD <- as.POSIXct(CPLF_data$Date, tz="UTC", origin ="1970-01-01", format ="%Y-%M-%D")
第一行是正确的,但是它没有显示秒。第二行是不正确的。
谢谢你。
我希望我的最终产品是一个新的列与时间和日期在正确的格式与自己的列。
3条答案
按热度按时间ulydmbyx1#
使用chron
times
类来获取时间,或者如果需要字符串,则使用.character。使用as.Date
来获取Date
类对象。sub
在时间部分之间放置冒号,之后我们可以将其转换为times
类。如果日期只有5个字符,sprintf
会在左侧用0填充,否则将其保留为6个字符,然后将其转换为Date
类。zujrkrfu2#
尝试lubridate包中的ymd_hms函数。
如果没有秒,可以输入00,例如......
rjzwgtxy3#
Base R没有一个只针对“time”(日期)的类,
as.POSIXct
不处理“times”,它处理“date-times”。lubridate::
包确实给予了类似数字的HMS值,这可能是相关的,但由于每行都有日期和时间,因此似乎应该将它们组合起来,而不是将它们放在单独的列中。注意:我假设所有年份都是两位数,并且在2000年或之后。如果这不是真的,使用一些自定义代码来解决它并不难。另外,如果你想通过添加
tz="US/Mountain"
或任何更适合数据的方法来设置这个时间戳的时区,请交给你。数据类型