我正在使用R中的日期数据。我拥有的数据是下一个:
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()
#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,但是我无法让代码格式化日期。最后,我想做这样的事情:
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中提取时间/小时。非常感谢。
发布于 2022-04-29 16:56:57
我们可以用
df$NewDate <- as.Date(df$Date, format = "%a %b %d %H:%M:%S COT %Y")-output
df$NewDate
[1] "2021-11-18" "2022-02-01" "2022-02-02" "2022-04-03" "2022-04-05" "2021-07-01如果COT部件不是常量,则用sub移除该子字符串,然后应用
df$NewDate <- as.Date(sub("\\w+\\s+(\\d{4})$", "\\1", df$Date),
format = "%a %b %d %H:%M:%S %Y")如果我们也想要时间
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
> 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:52https://stackoverflow.com/questions/72061295
复制相似问题