执行R代码后,我在数据框的列中得到的值是:
[2016年11月14日
我只想要日期,如何从值中删除“ bet”,“ be”?
我正在使用以下代码从文本文档中提取以上值:
coalesce((substr((stringr :: str_match(text,“ ISDA主协议的日期自(。)”)[,2]),1,16)),(substr((stringr :: str_match(文本,“ ISDA主协议,日期为(。)“)[,2]),1,13)))
[如果我刷合并的争论,那么第四个值将被截断。
我对代码没问题,但是在清洁时,应如何删除“ bet”,“ be”?
如果使用lubridate
,则可以在日期之后删除多余的文本:
library(lubridate)
test_strings <- c("25 July 2012 bet", "09 April 2015 be")
dmy(test_strings)
[1] "2012-07-25" "2015-04-09"
我们可以使用sub
删除空格,并使用"be"
删除所有内容
sub("\\s+be.*", "", c("25 July 2012 bet", "09 April 2015 be"))
#[1] "25 July 2012" "09 April 2015"
我远不是一名正则表达式专家,但这里是tidyverse做您想要的事情的方式:
library(tidyverse, verbose = F)
df <- tibble::tribble(
~V1, ~V2,
1L, "25 July 2012 bet",
2L, "22 June 2015 bet",
3L, "09 April 2015 be",
4L, "14 November 2016"
)
df %>%
mutate(V2 = str_replace(V2, pattern = "[:space:]be.*", replacement = ""))
#> # A tibble: 4 x 2
#> V1 V2
#> <int> <chr>
#> 1 1 25 July 2012
#> 2 2 22 June 2015
#> 3 3 09 April 2015
#> 4 4 14 November 2016
由reprex package(v0.3.0)在2020-02-21创建