ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [R] 텍스트 패턴 찾기, 위치 정보 수집, 수정 함수
    데이터 분석/텍스트 분석 2022. 4. 14. 21:04

    데이터 생성

    더보기
    # 문자열 벡터
    string <- c("data analysis is useful",
                "business analytics is helpful",
                'visualization of data is interestiong for data scientidyd')
    
    # 단일 문자열
    string1 <- "data analysis is useful"

    grep()

     pattern 파라미터와 text 파라미터를 입력하여 text 파라미터로 입력된 문자열에서 pattern 파라미터로 입력받은 문자열을 찾아 동일한 문자를 가지고 있는 text 파라미터 문자열의 인덱스를 출력하는 함수이다. text 파라미터는 문자열을 입력할 수도 있고, 문자열을 원소로 가지는 벡터를 입력할 수도 있다.

     value 파라미터에 TRUE를 입력하면 인덱스가 아닌 인덱스에 해당하는 문자열을 출력한다.

    grep('data', string)
    # [1] 1 3
    grep('data', string, value = TRUE)
    # [1] "data anlaysis is useful"                                  
    # [2] "visualization of data is interestiong for data scientidyd"

    grepl()

     pattern 파라미터와 text 파라미터를 입력하여 text 파라미터로 입력된 문자열에서 pattern 파라미터로 입력된 문자열을 찾아 동일한 문자를 가지고 있는 text 파라미터 문자열은 TRUE, 그렇지 않은 문자열은 FALSE로 출력한다.

    grepl('data', string)
    # [1]  TRUE FALSE  TRUE​

    regexpr()

     pattern 파라미터와 text 파라미터를 입력받아 입력받은 text 파라미터에서 입력받은 pattern 파라미터 찾고 pattern의 유무, 위치, 길이, 데이터 타입 등의 정보를 출력한다.

    만약 text 파라미터로 여러 개의 문자열을 원소로 가진 벡터를 입력했고 각 문자열에서 pattern과 일치하는 부분이 다수 있다면 각 문자열 당 가장 앞에 있는 부분에 대한 정보를 출력한다.

    regexpr(pattern = 'data', text = string) # 문자열 벡터
    '''
    [1]  1 -1 18
    attr(,"match.length")
    [1]  4 -1  4
    attr(,"index.type")
    [1] "chars"
    attr(,"useBytes")
    [1] TRUE
    '''
    
    regexpr(pattern = 'data', text = string1) # 단일 문자열
    '''
    [1] 1
    attr(,"match.length")
    [1] 4
    attr(,"index.type")
    [1] "chars"
    attr(,"useBytes")
    [1] TRUE
    '''

    gregexpr()

     pattern 파라미터와 text 파라미터를 입력받고, 입력받은 text 파라미터에서 입력받은 pattern을 찾고 pattern과 일치하는 부분의 유무, 위치, 길이, 데이터 타입 등을 각 문자열을 단위로 벡터를 출력한다. regexpr() 함수와는 다르게 pattern과 일치하는 모든 부분의 정보를 출력한다.

    gregexpr('data', string) # 문자열 벡터
    '''
    [[1]]
    [1] 1
    attr(,"match.length")
    [1] 4
    attr(,"index.type")
    [1] "chars"
    attr(,"useBytes")
    [1] TRUE
    
    [[2]]
    [1] -1
    attr(,"match.length")
    [1] -1
    attr(,"index.type")
    [1] "chars"
    attr(,"useBytes")
    [1] TRUE
    
    [[3]]
    [1] 18 43
    attr(,"match.length")
    [1] 4 4
    attr(,"index.type")
    [1] "chars"
    attr(,"useBytes")
    [1] TRUE
    '''
    
    gregexpr('data', string1) # 단일 문자열
    '''
    [[1]]
    [1] 1
    attr(,"match.length")
    [1] 4
    attr(,"index.type")
    [1] "chars"
    attr(,"useBytes")
    [1] TRUE
    '''

    regmatches()

     regexpr(), gregexpr() 함수를 이용해 얻은 인덱스를 m 파라미터에 입력하고, x 파라미터에 인덱스를 얻기 위해 사용했던 문자열을 입력하면 받은 인덱스에 해당하는 문자열을 출력한다. invert 파라미터에 TRUE를 입력하면 인덱스에 해당하는 문자열을 기준으로 나눠진 문자열 중 해당 인덱스에 문자열을 제외한 문자열을 출력한다. 

     regexpr() 함수를 통해 얻어진 인덱스는 부모 문자열에 위치 정보는 없기 때문에 패턴을 불러오기만 하지만, gregexpr() 함수를 통해 얻어진 인덱스는 부모 문자열에 위치에 위치 정보를 포함하고 있어 확인이 가능하다.

    regmatches(x=string1, m = regexpr(pattern = 'data', string1))
    # [1] "data"
    
    regmatches(x=string, m = regexpr(pattern = 'data', string))
    # [1] "data" "data"
    
    regmatches(x=string1, m=gregexpr(pattern = 'data',text = string1))
    # [[1]]
    # [1] "data"
    
    regmatches(x=string, m=gregexpr(pattern = 'data',text = string))
    '''
    [[1]]
    [1] "data"
    
    [[2]]
    character(0) # 패턴과 동일한 문자열 없음
    
    [[3]]
    [1] "data" "data"
    '''
    regmatches(string1, regexpr('data', string1), invert = TRUE)
    #[[1]]
    #[1] ""                    " anlaysis is useful"
    
    regmatches(string, regexpr('data', string), invert = TRUE)
    '''
    [[1]]
    [1] ""                    " anlaysis is useful"
    
    [[2]]
    [1] "business analytics is helpful" # 패턴과 동일한 문자열이 없어, 잘리지 않고 온전한 문자열 출력
    
    [[3]]
    [1] "visualization of "                   
    [2] " is interestiong for data scientidyd"
    '''
    
    regmatches(string, gregexpr('data',string), invert = TRUE)
    '''
    [[1]]
    [1] ""                    " anlaysis is useful"
    
    [[2]]
    [1] "business analytics is helpful"
    
    [[3]]
    [1] "visualization of "     " is interestiong for "
    [3] " scientidyd"       
    '''
    
    regmatches(string1, gregexpr('data',string1), invert = TRUE)
    '''
    [[1]]
    [1] ""                    " anlaysis is useful"
    '''

     

    '데이터 분석 > 텍스트 분석' 카테고리의 다른 글

    [R] KoNLP 패키지 설치  (0) 2022.05.08
    [R] Stringr 패키지  (0) 2022.04.16
    [R] Do it R 텍스트마이닝_1  (0) 2022.04.11
    [R] sub(), gsub(), 정규 표현식  (0) 2022.04.08
    [R]함수 paste(), paste0(), outer() 등  (0) 2022.04.02

    댓글

Designed by Tistory.