Найти шаблон в R - PullRequest
       11

Найти шаблон в R

0 голосов
/ 01 февраля 2019

Я пытаюсь очистить некоторые данные.Ниже приведен пример моих данных.

   test1          test2         test3    
 jsb cjn       kd N069W j        N9DSW 

Я хочу указать, в каком столбце есть шаблон N0 {num} {num} W.Часть {num} может быть любым числом от 0 до 9.Этот шаблон также может появиться в любом месте строки.Следовательно, в этом случае мои результаты будут следующими:

   test1          test2         test3     col
 jsb cjn       kd N069W j        N9DSW      2

Заранее благодарен за любую помощь.

Ответы [ 3 ]

0 голосов
/ 01 февраля 2019

Вы также можете использовать функцию str_detect() из библиотеки stringr .

library(stringr)
str_detect('kd NO69W j', pattern = "NO\\d+W")
# [1] TRUE
0 голосов
/ 01 февраля 2019

Использование apply:

df$col <- apply(df, 1, function(x) grep("N0\\d{2}W", x))

Данные:

df <- structure(list(test1 = structure(1L, .Label = "jsb cjn", class = "factor"), 
    test2 = structure(1L, .Label = "kd N069W j", class = "factor"), 
    test3 = structure(1L, .Label = "N9DSW ", class = "factor")), class = "data.frame", row.names = c(NA, 
-1L))
0 голосов
/ 01 февраля 2019

Мы перебираем столбцы, используем grepl, чтобы получить логический индекс, а затем с помощью max.col получаем индекс столбца каждой строки

max.col(data.frame(lapply(df1, grepl, pattern = "N0\\d{2}W")))
#[1] 2

data

df1 <- structure(list(test1 = "jsb cjn", test2 = "kd N069W j", 
 test3 = "N9DSW"), class = "data.frame", row.names = c(NA, 
 -1L))
...