【发布时间】:2020-01-21 19:02:41
【问题描述】:
你好!我正在尝试将 Start.time 变量从“4:00 PM”的字符格式更改并取出 PM/AM 并将其保留为 4:00 作为数字变量(如果可能)。谢谢!
【问题讨论】:
-
See here 提出一个人们可以帮助解决的 R 问题。这包括一个数据样本(不是图片)、所有必要的代码,以及对什么不起作用的清晰解释。
标签: r datetime time character numeric
你好!我正在尝试将 Start.time 变量从“4:00 PM”的字符格式更改并取出 PM/AM 并将其保留为 4:00 作为数字变量(如果可能)。谢谢!
【问题讨论】:
标签: r datetime time character numeric
一种选择是使用str_remove 匹配零个或多个空格(\\s*),后跟字符串末尾的字母“A”、“P”、“M”($)
library(stringr)
library(dplyr)
df1 %>%
mutate(Start.time = str_remove(Start.time, "\\s*[APM]+$"))
在base R 中,这可以通过sub 完成
df1$Start.time <- sub("\\s*[APM]+$", "", df1$Start.time)
或substr
trimws(substr(df1$Start.time, 1, 5))
【讨论】:
gsub("\\s*[APM]", "", start.time) 可用于将 HH:MM 之后的字符串部分替换为空字符串,只留下 HH:MM 位。
trimws(x) 替换字符串 x 中的任何前导空格。
> start.time
[1] "4:00 PM" "12:00 AM" " 4:00 AM"
> trimws(gsub("\\s*[APM]", "", start.time))
[1] "4:00" "12:00" "4:00"
【讨论】: