В моем фрейме данных «B» есть следующий столбец «check», в котором входные показатели находятся в разных строках.Эти операторы имеют переменную 'abc', и в соответствии с ними также есть запись значения.Сделанные записи являются ручными и не являются связными для каждой записи.Я должен извлечь только 'abc', а затем его 'value'
< B$checks
rows Checks
[1] there was no problem reported measures abc-96 xyz 450 327bbb11869 xyz 113 aaa 4 poc 470 b 3 surveyor issue
[2] abc(107 to 109) xyz 115 jbo xyz 104 optim
[3] problemm with caller abc 95 19468 4g xyz 103 91960 1 Remarks new loc reqd is problem
[4] abc_107 xyz 116 dor problem
[5] surevy done , no approximation issues abc 103 xyz 109 crux xyz 104
[6] ping test ok abc(86 rxlevel 84
[7] field is clean , can be used to buiild the required set up abc-86 xyz 94 Digital DSL No Building class Residential Building Type Multi
[8] abc 89 xyz 99 so as the user has no problem , check ping test
Ожидаемый вывод
rows Variable Value
[1] abc 96
[2] abc 107
[3] abc 95
[4] abc 107
[5] abc 103
[6] abc 86
[7] abc 86
[8] abc 89
Я попробовал следующее, используя ссылки под аналогичными запросами
usisng str_match
library(stringr)
m1 <- str_match(B$checks, "abc.*?([0-200.]{1,})") # value is between 0 to 200
, что привело к чему-то вроде ниже
row var value
1 abc-96 xyz 450 0
2 abc(10 10
3 abc 95 1 1
4 abc_10 10
5 abc 10 10
6 NA NA
7 NA NA
8 NA NA
Затем я попробовал следующее
B$Checks <- gsub("-", " ", B$Checks)
B$Checks <- gsub("/", " ", B$Checks)
B$Checks <- gsub("_", " ", B$Checks)
B$Checks <- gsub(":", " ", B$Checks)
B$Checks <- gsub(")", " ", B$Checks)
B$Checks <- gsub("((((", " ", B$Checks)
B$Checks <- gsub(".*abc", "abc", B$Checks)
B$Checks <- gsub("[[:punct:]]", " ", B$Checks)
regexp <- "[[:digit:]]+"
m <- str_extract(B$Checks, regexp)
m <- as.data.frame(m)
и смог получить "ожидаемый результат",
Но теперь я ищу следующие
1) Более простой набор команд или способ извлечь ожидаемый результат
2) Получить значения, которые представлены в виде диапазона, например, Iхотите следующую строку ввода
rows Checks
[2] abc(107 to 109) xyz 115 jbo xyz 104 optim
как
output>
rows Variable Value1 Value2
[2] abc 107 109
Требуется решение для 1) и 2), так как я работаю над большими наборами данных с такими жешаблоны и множество смешанных комбинаций переменных-значений.
Заранее спасибо.