我的数据集如下:
structure(list(Data = c("01/2023 (p)", "12/2022 (p)", "11/2022 (p)",
"10/2022", "09/2022"), index = c("99,1", "96,2", "110,2", "105,4",
"108,0")), row.names = c(NA, -5L), class = c("data.table", "data.frame"
), .internal.selfref = <pointer: 0x000001f72620e040>)
如何删除
(p)
列中的Data
,以便将其格式转换为日期?
圆括号
(
是正则表达式中的特殊字符,需要用\
转义。问题是 \
也需要被转义,所以你最终得到 \\(
.
dat <- structure(list(Data = c("01/2023 (p)", "12/2022 (p)", "11/2022 (p)",
"10/2022", "09/2022"), index = c("99,1", "96,2", "110,2", "105,4",
"108,0")), row.names = c(NA, -5L), class = c("data.table", "data.frame"))
dat
#> Data index
#> 1 01/2023 (p) 99,1
#> 2 12/2022 (p) 96,2
#> 3 11/2022 (p) 110,2
#> 4 10/2022 105,4
#> 5 09/2022 108,0
dat$Data <- gsub(" \\(p\\)", "", dat$Data)
dat
#> Data index
#> 1 01/2023 99,1
#> 2 12/2022 96,2
#> 3 11/2022 110,2
#> 4 10/2022 105,4
#> 5 09/2022 108,0
创建于 2023-03-14 与 reprex v2.0.2
将字符串转换为日期更直接的方法是使用
lubridate::parse_date_time
,您可以在其中指定要解析的格式类型:
lubridate::parse_date_time(df$Data, orders = c("%m/%Y (p)", "%m/%Y"))
#[1] "2023-01-01 UTC" "2022-12-01 UTC" "2022-11-01 UTC" "2022-10-01 UTC" "2022-09-01 UTC"