2012-10-26 23 views
9

से अंतिम शब्द को हटाएं मैं कुछ करने की कोशिश कर रहा हूं लेकिन उत्तर को याद/ढूंढ नहीं सकता। मेरे पास जनगणना ब्यूरो से शहर के नामों की एक सूची है और उन्होंने शहर के प्रकार को अंत में रखा है जो मेरे match() को गड़बड़ कर रहा है।R स्ट्रिंग

Middletown Township 
Sunny Valley Borough 
Hillside Village 
इस में

:

Middletown 
Sunny Valley 
Hillside 

कोई सुझाव

मैं इस करना चाहते हैं? आदर्श रूप में मैं भी मौजूद है या आर

यहाँ में एक lastIndexOf() समारोह जानना चाहते हैं dput है:

> dput(df1) 
structure(list(id = c(1, 2, 3), city = structure(c(2L, 3L, 1L 
), .Label = c("Hillside Village", "Middletown Township", "Sunny Valley Borough" 
), class = "factor")), .Names = c("id", "city"), row.names = c(NA, 
-3L), class = "data.frame") 

उत्तर

15

यह काम करेगा:

gsub("\\s*\\w*$", "", df1$city) 
[1] "Middletown" "Sunny Valley" "Hillside" 

यह किसी भी एक या से मिलकर सबस्ट्रिंग निकालता है अधिक स्पेस chararacters, स्ट्रिंग के अंत के बाद, "शब्द" वर्णों (रिक्त स्थान, संख्या, या अंडरस्कोर) के बाद, किसी भी संख्या के बाद।

+0

यदि मैं "टाउनशिप, बोरो, गांव" यानी अंतिम शब्द प्राप्त करना चाहता हूं तो क्या होगा। और इसे एक नए चर के रूप में सहेजें? – jacob

+1

आप स्ट्रिंग पैकेज का उपयोग कर सकते हैं। फंक्शन का नाम stri_extract_last_words है। आप इस फ़ंक्शन को वाक्यों की एक सूची प्रदान कर सकते हैं और यह उन वाक्यों में अंतिम शब्दों की सूची वापस कर देगा। हालांकि, यह उद्देश्य से हटाने के लिए वाक्य से अंतिम शब्द नहीं हटाएगा, हमें जोश – rkmalaiya

12

यहाँ एक regexp आपको क्या चाहिए होता है कि है:

sub(df1$city, pattern = " [[:alpha:]]*$", replacement = "") 

[1] "मिडलटाउन" "सनी घाटी" "Hillside"

कि सबस्ट्रिंग है कि एक स्थान के साथ शुरू होता है की जगह , तब स्ट्रिंग के अंत तक एक खाली स्ट्रिंग के साथ केवल अक्षरों को शामिल किया जाता है।

+0

+1 द्वारा प्रदान किए गए gsub कमांड की आवश्यकता है, यह रेगेक्स बेहतर उत्तर है क्योंकि यह एकल शब्द को बरकरार रखता है। – topchef

संबंधित मुद्दे