การเอาสตริงออกหลังจากอักขระบางตัวในข้อความที่กำหนด


15

ฉันมีชุดข้อมูลเหมือนหนึ่งชุดด้านล่าง ฉันต้องการลบตัวละครทั้งหมดหลังจากตัวละคร© ฉันจะทำสิ่งนั้นใน 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)

มันอยู่หลังตัวละครที่เฉพาะเจาะจงหรือหลังจากดัชนีที่เฉพาะเจาะจง?
Dawny33

หลังจากตัวละครที่เฉพาะเจาะจง: ©
Hamideh

จากนั้นดูเหมือนว่าคำตอบที่มีอยู่แก้ไขคำถามของคุณ :)
Dawny33

คำตอบ:


19

ตัวอย่างเช่น

 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 "

หรือถ้าคุณต้องการที่จะให้ตัวละคร @:

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

แก้ไข: หากสิ่งที่คุณต้องการคือการลบทุกอย่างจาก @ ล่าสุดคุณเพียงแค่ต้องทำตามตัวอย่างก่อนหน้านี้ด้วย regex ที่เหมาะสม ตัวอย่าง:

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 "

ด้วยการจับคู่ที่เรากำลังมองหาทั้ง sub และ gsub จะให้คำตอบเดียวกัน


ขอขอบคุณ. และจะทำอย่างไรถ้าฉันต้องการทำเพื่อ©สุดท้ายในข้อความ พิจารณาสิ่งนี้: c ("© aaa © bbb") -> c ("© aaa")
Hamideh

@HamidehIraj คุณสามารถใช้ประโยชน์จากregexesสำหรับการดำเนินการนั้น
Dawny33

1
ยินดี. เมื่อคุณได้ใช้งาน regex คุณจะเห็นว่าการลบจาก @ char ครั้งสุดท้ายนั้นเป็นเรื่องง่าย ฉันได้แก้ไขคำตอบเพื่อรวมกรณีนี้ด้วย
58
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.