r - 在 R 中将字符串变量(例如“815”)重新编码为时间变量(08:15)
问题描述
我正在寻找帮助重新编码字符串变量以使用 r 正确格式化为时间变量。在一周的时间里,我有大约 450 个人的每日日记数据。他们自我报告了他们的睡觉和起床时间,我正在尝试用数据做两件事:1)查看睡觉和起床时间在一周内的变化,以及 2)计算“睡眠时间”;这些就寝时间和起床时间之间经过的小时数。
我的问题是找到一种重新格式化数据的方法。睡觉和起床时间目前是字符串变量,在 hh 和 mm 之间没有冒号(“815”表示上午 8:15;“2345”表示晚上 11:45;“15”表示上午 12:15)。我不一定在意将 AM/PM 放在那里,如果所有内容都重新格式化为“23:45”之类的东西就可以了。
我无法弄清楚哪个包/功能/创意解决方法最能帮助解决这个问题。我确实看到了一些包,如 chron 或 lubridate,但这些函数似乎对我的第二个问题更有帮助,即计算两个变量之间的时间差。但我确实需要帮助将这个字符串变量重新编码为可用的东西。
感谢您的任何建议或帮助!!!
解决方案
我们可以填充 0 使宽度为 4,然后用于as.ITime
转换为 Time 类
library(stringr)
library(data.table)
out <- as.ITime(str_replace(str_pad("815", width = 4, pad = 0), "(\\d{2})", "\\1:"))
str(out)
#'ITime' int 08:15:00
out
#[1] "08:15:00"
或使用base R
strptime(sub("(\\d{2})", "\\1:", sprintf("%04s", "815")), format = '%H:%M')
#[1] "2020-02-15 08:15:00 EST"
推荐阅读
- ios - 如何将数据从父模型类传递到 SwiftUI 中的子视图
- dart-html - onEvent.Listen() 和 addEventListener 的区别
- publish-subscribe - 如何在 dolphindb 中订阅流表
- r - 将纽约州法院数据中的数据转换为要可视化的数据框 R(导入但未成为正确的数据框)
- git - git-svn 死于信号 11
- java - 如何使用 kotlin 或 java 将倒数计时器设置为一天中的特定时间?
- python - 如何在 tkinter 中的屏幕/帧之间切换?
- jupyter-notebook - 无法在 OSX 10.11 中使用 xeus-cling 内核
- android - 如何在 Android Studio 中添加 gradle 的任务参数?
- sql - Only SubQuery expressions that are top level conjuncts are allowed error