首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将复杂字符串格式化为日期

将复杂字符串格式化为日期
EN

Stack Overflow用户
提问于 2022-04-29 16:54:05
回答 1查看 40关注 0票数 -1

我正在使用R中的日期数据。我拥有的数据是下一个:

代码语言:javascript
运行
复制
df
                          Date Q
1 Thu Nov 18 16:32:03 COT 2021 1
2 Tue Feb 01 23:28:14 COT 2022 1
3 Wed Feb 02 16:43:15 COT 2022 1
4 Sun Apr 03 22:17:28 COT 2022 1
5 Tue Apr 05 10:47:36 COT 2022 1
6 Thu Jul 01 16:52:52 COT 2021 1

dput()

代码语言:javascript
运行
复制
#Dput
df <- structure(list(Date = c("Thu Nov 18 16:32:03 COT 2021", "Tue Feb 01 23:28:14 COT 2022", 
"Wed Feb 02 16:43:15 COT 2022", "Sun Apr 03 22:17:28 COT 2022", 
"Tue Apr 05 10:47:36 COT 2022", "Thu Jul 01 16:52:52 COT 2021"
), Q = c(1, 1, 1, 1, 1, 1)), row.names = c(NA, 6L), class = "data.frame")

主要问题是关于Date变量。正如你所看到的,它有一个非常长和复杂的格式。我尝试过使用as.Date(),甚至lubridate,但是我无法让代码格式化日期。最后,我想做这样的事情:

代码语言:javascript
运行
复制
                          Date Q    NewDate
1 Thu Nov 18 16:32:03 COT 2021 1 2021-11-18
2 Tue Feb 01 23:28:14 COT 2022 1 2022-02-01
3 Wed Feb 02 16:43:15 COT 2022 1 2022-02-02
4 Sun Apr 03 22:17:28 COT 2022 1 2022-04-03
5 Tue Apr 05 10:47:36 COT 2022 1 2022-04-05
6 Thu Jul 01 16:52:52 COT 2021 1 2021-07-01

如果可能的话,我也想从变量Date中提取时间/小时。非常感谢。

EN

回答 1

Stack Overflow用户

发布于 2022-04-29 16:56:57

我们可以用

代码语言:javascript
运行
复制
df$NewDate <- as.Date(df$Date, format = "%a %b %d %H:%M:%S COT %Y")

-output

代码语言:javascript
运行
复制
df$NewDate
[1] "2021-11-18" "2022-02-01" "2022-02-02" "2022-04-03" "2022-04-05" "2021-07-01

如果COT部件不是常量,则用sub移除该子字符串,然后应用

代码语言:javascript
运行
复制
df$NewDate <- as.Date(sub("\\w+\\s+(\\d{4})$", "\\1", df$Date),
       format = "%a %b %d %H:%M:%S %Y")

如果我们也想要时间

代码语言:javascript
运行
复制
datetime <-  as.POSIXct(df$Date, format = "%a %b %d %H:%M:%S COT %Y")
df$NewDate <- as.Date(datetime)
df$Time <- format(datetime, "%T")

-output

代码语言:javascript
运行
复制
> df
                          Date Q    NewDate     Time
1 Thu Nov 18 16:32:03 COT 2021 1 2021-11-18 16:32:03
2 Tue Feb 01 23:28:14 COT 2022 1 2022-02-02 23:28:14
3 Wed Feb 02 16:43:15 COT 2022 1 2022-02-02 16:43:15
4 Sun Apr 03 22:17:28 COT 2022 1 2022-04-04 22:17:28
5 Tue Apr 05 10:47:36 COT 2022 1 2022-04-05 10:47:36
6 Thu Jul 01 16:52:52 COT 2021 1 2021-07-01 16:52:52
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72061295

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档