2014-04-18 3 views
0

문자열에서만 문자 만 추출하려고합니다. 이들의 위치가 다양하기 때문에 값의 위치에 의존하는 구문을 사용할 수 없습니다. 예를 들어 다양한 조건에서 문자열 추출

, 나는 값이 반복되는 다음 열 X가 있지만, 말을 다른 번호 :

x <- c("dummy.DR57", "dummy.hour41", "dummy.MAV43", "dummy.SB1") 

내가 두 개의 열을 만들려면 : 1 : 후 바로 문자 열은 " . " 하지만 숫자 전에 :

name <- c("DR", "hour", "MAV", "SB") 

2 : 그냥 숫자 열 :

number <- c("57", "41", "43", "1") 

나는 대부분 SUBSTR과 str_sub을 노력했습니다 -하지만 난 내가 원하는 결과를받지 못했습니다.

도움을 주시면 감사하겠습니다.

답변

0
x <- c("dummy.DR57", "dummy.hour41", "dummy.MAV43", "dummy.SB1") 

(number <- gsub('[[:alpha:]].', '', x)) 
# [1] "57" "41" "3" "1" 

(name <- gsub("[^.]*[.]|[[:digit:]]", "", x)) 
# [1] "DR" "hour" "MAV" "SB" 
0
> gsub(x, pattern = '[0-9]|dummy\\.', replacement = '') 
[1] "DR" "hour" "MAV" "SB" 
> gsub(x, pattern = '[a-zA-Z]|\\.', replacement = '') 
[1] "57" "41" "43" "1" 
0

이 작업을 시도 할 수 있습니다 :

gsub(pattern = "(^.*\\.)([[:alpha:]]+)([[:digit:]]+)", 
    replacement = "\\2", 
    x = x) 
# [1] "DR" "hour" "MAV" "SB" 

gsub(pattern = "(^.*\\.)([[:alpha:]]+)([[:digit:]]+)", 
    replacement = "\\3", 
    x = x) 
# [1] "57" "41" "43" "1"