【问题标题】:R base package - calculating time from character stringR基础包——从字符串计算时间
【发布时间】:2023-02-05 02:56:59
【问题描述】:

有没有可能只从“2021-09-13T16:40”这样的字符串中获取时间?

我从 lubridate 或 hms 得到它,但我的问题是我是否可以得到它根据仅限 R。

我不想使用 format() 因为我想用它类:“hms”“difftime”。

谢谢

【问题讨论】:

  • sub(".*T", "", string)
  • 为澄清起见,您希望最终输出为 "hms" "difftime" 类,但您只想使用 base R?如果我理解正确,您至少需要加载 hms 包以将对象转换为 hms 对象。
  • 是的,我需要一类“hms”“difftime”,我可以用 hms 得到它。所以据我所知,base R 是不可能的?
  • 是的,如果你想让一个对象成为 hms 的类,你至少需要加载 hms 库,所以你想要的东西在 base R 中是不可用的。

标签: r


【解决方案1】:

请检查以下代码

library(stringr)
library(hms)
library(lubridate)

string <- "2021-09-13T16:40"
hms::as_hms(as.POSIXct(str_extract(string,'(?<=T).*'), format='%H:%M'))

创建于 2023-02-04 reprex v2.0.2

16:40:00

【讨论】:

  • OP 特别要求一个非 tidyverse 解决方案...... ???
【解决方案2】:

您可以先使用 strptime 获得正确的格式,然后使用 strftime 获得您想要的时间:

string <- "2021-09-13T16:40"
strftime(strptime(string, format = "%Y-%m-%dT%H:%M"), '%H:%M')
#> [1] "16:40"

创建于 2023-02-04 reprex v2.0.2

【讨论】:

    猜你喜欢
    • 2014-04-18
    • 2020-05-20
    • 1970-01-01
    • 2021-09-18
    • 1970-01-01
    • 2017-01-09
    • 1970-01-01
    • 2015-02-06
    • 2021-01-09
    相关资源
    最近更新 更多