r - 在 R 中将时间转换为“HMS”字符格式
问题描述
我有一列日期时间,格式为“2000-11-21 10:01:01”、2000-11-21 00:02:01、2000-11-21 00:00:06。我想创建一个新列,将时间设置为 HMS 格式,例如,在上面的 3 个日期中,它将返回“HMS”、“MS”、“S”。我会尝试按照以下方式进行操作,但我想知道是否有更简单的方法:
ifelse(
grepl("00:00:", datecolumn), "S",
ifelse(grepl("00:", datecolumn), "MS", "HMS")
)
输出:
datecolumn HMS
2000-11-21 10:01:01 HMS
2000-11-21 00:02:01 MS
2000-11-21 00:00:06 S
2000-11-21 00:00:10 S
2000-11-21 00:10:06 MS
2000-11-21 00:00:07 S
2000-11-21 10:00:06 HMS
解决方案
您可以像这样使用 lubridate 包paste
:
require(lubridate)
df$new_col <- paste(ifelse(hour(df$date) > 0, "H", ""),
ifelse(minute(df$date) > 0, "M", ""),
ifelse(second(df$date) > 0, "S", ""), sep = "")
推荐阅读
- jenkins - 即使Jenkins在本地主机中,也可以在将更改推送到BitBucket时进行构建?
- c# - php 和 unity 仅在某些设备中存在问题
- python - python:内置函数重新定义,具有不同的参数
- node.js - 将pdfmake缓冲区上传到s3
- spring - 如何在使用 Redis 会话存储的 Spring Boot 应用程序中获取当前 Principal
- aws-lambda - 使用 Lambda 代理集成的 Lambda 步骤函数
- pandas - Pandas:根据来自较小数据帧的信息计算巨型数据帧每一行中的匹配值
- r - 如何设置 ggplot 标题的样式?
- playframework - 配置键“authorizationUrl”设置为 null 但应为 STRING]
- angular - Springboot Angular安全-REST调用禁止403