Удаление строки из столбца в R - PullRequest
1 голос
/ 21 февраля 2020

После выполнения кода R значения, которые я получил в столбце данных, составляют:

  1. Ставка 25 июля 2012 года
  2. 22 июня 2015 года ставка
  3. 09 Апрель 2015 г. be
  4. 14 ноября 2016 г.

    Мне нужны только даты. Как я могу убрать из ставок «bet», «be»?

Я использую приведенный ниже код для извлечения вышеуказанных значений из текстового документа:

coalesce ((substr ((stringr :: str_match (text, ") Генеральное соглашение ISDA от (. * 1019) *) ") [, 2]), 1,16)), (substr ((stringr :: str_match (text," Генеральное соглашение ISDA от (. ) ") [, 2]), 1, 13)))

Если я проведу объединенные аргументы, то 4-е значение будет усечено.

Я в порядке с кодом, но при очистке, как я должен удалить "ставку", "быть"?

Ответы [ 3 ]

2 голосов
/ 21 февраля 2020

Я далёк от того, чтобы быть экспертом по регулярным выражениям, но здесь есть способ делать то, что вы хотите:

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

Создано в 2020-02-21 представьте пакет (v0.3.0)

1 голос
/ 21 февраля 2020

Если вы используете lubridate, вы можете удалить лишний текст после даты:

library(lubridate)

test_strings <- c("25 July 2012 bet", "09 April 2015 be")

dmy(test_strings)

[1] "2012-07-25" "2015-04-09"
1 голос
/ 21 февраля 2020

Мы можем использовать sub для удаления пробелов и всего с "be"

sub("\\s+be.*", "", c("25 July 2012 bet", "09 April 2015 be"))
#[1] "25 July 2012"  "09 April 2015"
...