首页 > 解决方案 > 在 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

标签: rdatetime

解决方案


您可以像这样使用 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 = "")

推荐阅读