[r] 문자열 내 특정 문자 교체

Excel 의 찾기 및 바꾸기 기능 비슷한 벡터 내의 문자열에서 특정 문자를 제거하고 싶습니다 .

내가 시작하는 데이터는 다음과 같습니다.

group <- data.frame(c("12357e", "12575e", "197e18", "e18947")

첫 번째 열부터 시작합니다. 의을 제거하여 두 번째 열을 생성하고 싶습니다 e.

group       group.no.e
12357e      12357
12575e      12575
197e18      19718
e18947      18947



답변

정규 표현식과 함수로 gsub():

group <- c("12357e", "12575e", "197e18", "e18947")
group
[1] "12357e" "12575e" "197e18" "e18947"

gsub("e", "", group)
[1] "12357" "12575" "19718" "18947"

어떤 gsub여기 일은 각각의 발생을 교체하는 것입니다 "e"빈 문자열로 "".


자세한 내용은 ?regexp또는 참조하십시오 gsub.


답변

정규식은 친구입니다.

R> ## also adds missing ')' and sets column name
R> group<-data.frame(group=c("12357e", "12575e", "197e18", "e18947"))  )
R> group
   group
1 12357e
2 12575e
3 197e18
4 e18947

이제 gsub()가장 간단한 대체 패턴을 사용하십시오 : 빈 문자열 :

R> group$groupNoE <- gsub("e", "", group$group)
R> group
   group groupNoE
1 12357e    12357
2 12575e    12575
3 197e18    19718
4 e18947    18947
R> 


답변

문자열을 바꾸는 두 가지 방법을 요약하면 다음과 같습니다.

group<-data.frame(group=c("12357e", "12575e", "197e18", "e18947"))

1) 사용 gsub

group$group.no.e <- gsub("e", "", group$group)

2) stringr패키지 사용

group$group.no.e <- str_replace_all(group$group, "e", "")

둘 다 원하는 출력을 생성합니다.

   group group.no.e
1 12357e      12357
2 12575e      12575
3 197e18      19718
4 e18947      18947


답변

일부 문자를 바꾸려면 문자열 벡터에서 데이터 프레임을 만들 필요가 없습니다. @Andrie와 @Dirk Eddelbuettel에 의해 이미 언급되었으므로 정규식이 적합합니다.

점과 같은 특수 문자를 바꾸려면 아래 예제와 같이 정규식 구문을 완전히 사용해야합니다.

ctr_names <- c("Czech.Republic","New.Zealand","Great.Britain")
gsub("[.]", " ", ctr_names)

이것은 생산할 것이다

[1] "Czech Republic" "New Zealand"    "Great Britain" 


답변

stringi 패키지를 사용하십시오 .

require(stringi)

group<-data.frame(c("12357e", "12575e", "197e18", "e18947"))
stri_replace_all(group[,1], "", fixed="e")
[1] "12357" "12575" "19718" "18947"


답변

      library(stringi)

            group <- c('12357e', '12575e', '12575e', ' 197e18',  'e18947')

            pattern <- "e"
            replacement <-  ""
            group <- str_replace(group, pattern, replacement)
            group

[1] "12357"  "12575"  "12575"  " 19718" "18947" 


답변