r - 格式化时间戳
问题描述
我正在尝试以 24 小时格式更正和重新格式化时间戳,但是它们缺少足够的数字来正确使用 POSIXct 函数。
这是日期和时间戳的示例。在数据框中,它们是年份(例如:2018)、一年中的 DOY 日(例如:305)和时间(例如:0)的列。
TIME 专栏给我带来了问题。这些值看起来像 (0, 30, 100, 130, 200)。在这种情况下,如果格式化为 %H:%M:%S 格式,则 0 应该是 00:00:00。我的问题是我需要弄清楚如何以这种方式格式化它。
这是我尝试过的代码:
mt$date <- as.POSIXct(paste(mt$Year, mt$DOY, mt$Time), format = "%Y %j %H")
感谢您的帮助,我相信这可能很容易解决。
解决方案
我们可以利用sprintf
来创建format
mt$date <- with(mt, as.POSIXct(paste0(Year, '-', DOY,' ',
sub('^(..)', '\\1:', sprintf('%04d', Time))), format = "%Y-%j %H:%M"))
mt$date
#[1] "2018-11-01 00:00:00 EDT" "2018-11-08 00:30:00 EST" "2018-06-24 01:00:00 EDT"
#[4] "2018-08-13 01:30:00 EDT" "2018-11-16 10:00:00 EST"
数据
mt <- structure(list(Year = c(2018, 2018, 2018, 2018, 2018), DOY = c(305,
312, 175, 225, 320), Time = c(0, 30, 100, 130, 1000)),
class = "data.frame", row.names = c(NA,
-5L))
推荐阅读
- algorithm - 关键词云是如何构建的?
- apache - Apache2 配置到 Nginx 配置?
- laravel - 将laravel部署到heroku时,参数“client_encoding”的值无效:“utf8mb4”(SQL:从“tablename”中选择*)
- jquery - 如何使用数据表“on change”选择选项更新我的数据库中的第二行
- python - 如何从字符串中检测语言,例如我在 python 3 中的 php 函数
- mongodb - 命令 '/bin/sh -c service mongod start' 返回一个非零代码: 1 在 docker
- jupyter-notebook - 在 jupyter notebook 中加载 katex 的散景问题
- javascript - 强制在 css 上刷新浏览器不会使用 react 和 antd 更新代码
- python - 如何根据另一列中的单元格值有条件地填充 Pandas 列
- smartcontracts - Windows 10 - npm i @truffle/contract