2016-10-20 2 views
6

행을 접어 세미콜론을 사용하여 분리 한 후 문자열의 앞뒤에있는 세미콜론을 삭제하고 싶습니다. 여러 세미콜론은 셀에서 공백을 나타냅니다. 예를 들어 관찰은 다음과 같이 붕괴 이후 보일 수 있습니다 :문자열 시작 부분과 끝 부분의 모든 구분 기호 제거

new_df <- group_by(old_df, unique_id) %>% summarize_each(funs(paste(., collapse = ';'))) 

: 여기

TX;PA;CA 

내 붕괴 코드 :

;TX;PA;CA;;;;;;; 

I는 다음과 같이 할 셀을 싶습니다 세미콜론으로 gsub을 시도하면 모두 제거됩니다. 끝 문자를 제거하면 세미콜론 중 하나가 제거됩니다. 처음부터 끝까지 모두 제거하는 방법에 대한 아이디어는 있지만, 관찰 사이에 남겨 두는 방법은 있습니까? 감사.

답변

10

사용 정규 표현식 ^;+|;+$

x <- ";TX;PA;CA;;;;;;;" 
gsub("^;+|;+$", "", x) 

^은 문자열의 시작의 + 여러 경기를 나타내는 표시하고 $는 문자열의 끝을 나타냅니다. |은 "OR"로되어 있습니다. 따라서 문자열을 시작하면 ;을 찾거나 문자열 끝에 ;을 입력하고 빈 공간으로 바꿉니다.

+0

할 수있는'GSUB ("^; + | + $는", "", x)는'충분하다 제거한 것을 캡처 할 필요가 없습니다. –

+0

큰 잡기. 나는 당신의 제안을 반영하기 위해 대답을 편집했다. – Benjamin

+0

Brilliant! 그것을 사랑해. 정말 고마워! 대단히 도움이됩니다. 특히 HTML로 이러한 항목을 게시해야하는 경우 여러 개의 공백이있는 것이 엉덩이의 고통입니다! :) – DCRubyHound

3

stringi 패키지를 사용하면 다른 모든 것을 보존하고 다듬 으려는 패턴을 지정할 수 있습니다. (당신이 너무 다른 패턴을 지정할 수 있습니다하지만) 당신은 단지 거기에 문자가있는 경우, 당신은 단순히 사실

stringi::stri_trim_both(";TX;PA;CA;;;;;;;", "\\p{L}") 
## [1] "TX;PA;CA" 
관련 문제