如何删除或替换数据集的某些值

问题描述 投票:0回答:2

我的数据集如下:

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
,以便将其格式转换为日期?

r contains
2个回答
1
投票

圆括号

(
是正则表达式中的特殊字符,需要用
\
转义。问题是
\
也需要被转义,所以你最终得到
\\(
.

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


0
投票

将字符串转换为日期更直接的方法是使用

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"
© www.soinside.com 2019 - 2024. All rights reserved.