2017-03-25 2 views
0

$ 심볼 다음의 모든 문자를 제거하려는 문자열 데이터 프레임이 있습니다. 내가 $grepl("^\\$",strings)를 사용하여 시작하는 모든 문자열을 알아낼 수 있었다문자열의 데이터 프레임에서 심볼 다음에 N 글자를 파싱

strings <- data.frame("strings"=c("String test $ABCD","$BGI test", 
"super weird $nabc test","$500 giveway","another $Abc/a test")) 

공백, 특수 문자 다른 / 이상, 또는 수있을 때까지 나는 단지 문자를 원하지만 나는 문자열 곳을 잃었 $은 예를 들어 문자열의 중간에 있습니다. 또한, $0:9

출력 목표있는 모든 문자열을 제거하려는 것은 :

ABCD 
BGI 
nabc 
Abc/a 

은 그래서 space있을 때까지 grepl 또는 $을 발견하고 모든 characters을 유지 비슷한을 사용하는 방법을 찾기 위해 노력 , number, 또는

/ 중요 최소한의 경우 / 이외의 special character하지만, 통합 할 수있는 방법을 알아낼 수 있다면 모든 훌륭한 것! 감사.

+0

해당 문자를 _remove_하거나 해당 문자 만 추출 하시겠습니까 /? 당신이 제안한 출력은 당신이 $ 500을 놓친 것을 제외하고 그 문자열을 추출하고자하는 것처럼 보입니다. – G5W

+0

데이터 프레임에서 추출하고 싶습니다. 추출을 사용하여 작동하지 않을 새로운 데이터 프레임을 만듭니다. $ 500 제외 의도적인데, 첫 문자가'$' – Mz2rA

+0

다음에 오는 문자 인 경우에만 추출을 원합니다. 내 대답이 바뀔 것입니다. – G5W

답변

0
gsub(".*\\$([a-zA-Z][a-zA-Z\\/]*).*", "\\1", 
    strings$strings[grepl("\\$[a-zA-Z]", strings$strings)], perl=TRUE) 
[1] "ABCD" "BGI" "nabc" "Abc/a" 

업데이트 : 영업 이익은 에 요청하지 포함/이후 문자. 다음과 같이 수행 할 수 있습니다.

gsub(".*\\$([a-zA-Z][a-zA-Z]*).*", "\\1", 
     strings$strings[grepl("\\$[a-zA-Z]", strings$strings)], perl=TRUE) 
[1] "ABCD" "BGI" "nabc" "Abc" 
+0

와우, 정말 고마워! 한 가지 문제는 여전히'/'기호 다음에 문자열을 유지한다는 것입니다. 결과를 검토 한 결과 실제로 캐릭터를 유지하는 것이 합리적입니다. (따라서 새로운 최종 결과는 'Abc/a'대신에 'Abc'가됩니다.) – Mz2rA

+0

오/당신은 /에서 멈추고 싶습니다. 내 대답을 바꿀 것입니다. – G5W

+0

예 , 사과를 한 번 결과를 검토 한 후에는 편지를 보관하는 것이 가장 좋습니다. – Mz2rA

관련 문제