r - 将包含时间的列转换为日期
问题描述
我有一个包含格式为 20:41、00:01、23:59 的时间的列。我正在尝试将此列转换为 Date 类型,但是我的代码会生成所有 NA 值。
这是我用来转换的代码:
my_df$times<- as.Date(my_df$times, "%h:%m")
这是什么原因造成的?
解决方案
您可以使用as.POSIXct
将小时-分钟转换为日期-时间值。
x <- c('20:41', '00:01', '23:59')
as.POSIXct(x, format = '%H:%M', tz = 'UTC')
#[1] "2020-10-06 20:41:00 UTC" "2020-10-06 00:01:00 UTC" "2020-10-06 23:59:00 UTC"
#Or with strptime
#strptime(x, format = '%H:%M', tz = 'UTC')
如果我们想将日期作为单独的向量包含在内,我们可以使用paste
将日期和时间组合在一起,然后使用as.POSIXct
:
x <- c('20:41', '00:01', '23:59')
y <- c('2020-01-02', '2020-03-03', '2020-09-06')
as.POSIXct(paste(y, x), format = '%Y-%m-%d %H:%M', tz = 'UTC')
#[1] "2020-01-02 20:41:00 UTC" "2020-03-03 00:01:00 UTC" "2020-09-06 23:59:00 UTC"
推荐阅读
- c++ - C++ 文件有 32K 个整数,由换行符分隔。我需要创建 8 个较小的文件,每个文件包含 4096 个整数
- python - 如何对 22 行 546304 列的数组应用连续小波变换?
- javascript - 导航栏导致其他组件无法在 React Router 中加载
- node.js - vscode webviews中的D3,什么都看不到
- python - 这可以写得更简洁吗?
- c++ - 伏尔甘。VkInstance 和 VkDevice 未正确销毁
- c++ - 如何在 CodeLite 中设置启动项目?
- macos - 从 C++ 访问 MacOS 剪贴板?
- javascript - Firebase 电话授权 Flutter Web
- python - 如何在 Matplotlib 或 Seaborn 中制作带有小空格分隔的绘图?