usuwanie ciągów po określonym znaku w danym tekście

15

Mam zestaw danych taki jak ten poniżej. Chcę usunąć wszystkie znaki po znaku ©. Jak mogę to zrobić w R?

data_clean_phrase <- c("Copyright © The Society of Geomagnetism and Earth", 
"© 2013 Chinese National Committee ")

data_clean_df <- as.data.frame(data_clean_phrase)
Hamideh
źródło
Czy to po określonym znaku, czy po określonym indeksie?
Dawny33
Po konkretnym znaku: ©
Hamideh
Wygląda na to, że istniejąca odpowiedź rozwiązała twoje pytanie :)
Dawny33

Odpowiedzi:

19

Na przykład:

 rs<-c("copyright @ The Society of mo","I want you to meet me @ the coffeshop")
 s<-gsub("@.*","",rs)
 s
 [1] "copyright "             "I want you to meet me "

Lub jeśli chcesz zachować znak @:

 s<-gsub("(@).*","\\1",rs)
 s
 [1] "copyright @"             "I want you to meet me @"

EDYCJA: Jeśli chcesz usunąć wszystko z ostatniego @, po prostu postępuj zgodnie z poprzednim przykładem z odpowiednim wyrażeniem regularnym. Przykład:

rs<-c("copyright @ The Society of mo located @ my house","I want you to meet me @ the coffeshop")
s<-gsub("(.*)@.*","\\1",rs)
s
[1] "copyright @ The Society of mo located " "I want you to meet me "

Biorąc pod uwagę szukane dopasowanie, zarówno sub, jak i gsub podadzą ci tę samą odpowiedź.

MASL
źródło
Dziękuję Ci. a co jeśli chcę to zrobić dla ostatniego © w tekście. Rozważ to: c („© aaa © bbb”) -> c („© aaa”)
Hamideh
@HamidehIraj Można skorzystać z regexes do wykonywania tego.
Dawny33
1
Zapraszamy. Po przyzwyczajeniu się do wyrażenia regularnego zobaczysz, że usunięcie go z ostatniego @ char jest równie łatwe. Zredagowałem swoją odpowiedź, aby uwzględnić również tę sprawę.
MASL