R의 복잡한 문자열에서 여러 새 열을 추출하는 방법 (str_sub가 트릭을 수행하지 않는 것 같습니다)

Hendrik

R의 문자열에서 여러 변수를 추출하는 데 어려움을 겪고 있습니다.

열은 다음과 같습니다.

7 digit identifier_ NAME: 4 digit value- 4 digit value- 4 digit value- location1- location2: 7-digit identifier_ junk_ junk_3 digit value with junk attached

예를 들면 :

1234567_NAME:0011-1234-0176-town-car:1234567_000001_original_010qyz

다음과 같은 새 열이 필요합니다.

  • 7 자리 식별자 ( "1234567")

  • 이름

  • 4 자리 값 각각
  • 각 위치
  • 3 자리 값

str_sub() 문자열의 일부 길이가 가변적이기 때문에 작동하지 않습니다.

시도 gsub했지만 일부 특수 문자가 여러 번 반복되기 때문에 (예 : ": '및"- ") 문자열의 잘 정의 된 부분을 추출하는 데 사용할 수 없습니다.

Psidom

긴 정규 표현식을 피하기 위해 한 가지 옵션은 str_split_fixedwith [_:-]를 구분자로 사용하여 열을 행렬로 분할하고 필요하지 않은 열을 제거하고 마지막 열에서 숫자 값을 추출하는 것입니다.

s <- "1234567_NAME:0011-1234-0176-town-car:1234567_000001_original_010qyz"
ss <- c(s,s,s)

library(stringr)
mat <- str_split_fixed(ss, "[_:-]", 11)[,-c(9, 10)]
mat
#     [,1]      [,2]   [,3]   [,4]   [,5]   [,6]   [,7]  [,8]      [,9]    
#[1,] "1234567" "NAME" "0011" "1234" "0176" "town" "car" "1234567" "010qyz"
#[2,] "1234567" "NAME" "0011" "1234" "0176" "town" "car" "1234567" "010qyz"
#[3,] "1234567" "NAME" "0011" "1234" "0176" "town" "car" "1234567" "010qyz"

mat[,9] <- sub("(\\d{3}).*", "\\1", mat[,9])
mat
#     [,1]      [,2]   [,3]   [,4]   [,5]   [,6]   [,7]  [,8]      [,9] 
#[1,] "1234567" "NAME" "0011" "1234" "0176" "town" "car" "1234567" "010"
#[2,] "1234567" "NAME" "0011" "1234" "0176" "town" "car" "1234567" "010"
#[3,] "1234567" "NAME" "0011" "1234" "0176" "town" "car" "1234567" "010"

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관