2012-10-26 21 views
9

私は何かをしようとしていますが、覚えていない/答えを見つけられません。私は国勢調査局から市の名前のリストを持っていて、彼らは私のmatch()を台無しにしている最後の都市のタイプを入れました。R最後の単語を文字列から削除する

私はこの作りたいのですが:この中

Middletown Township 
Sunny Valley Borough 
Hillside Village 

Middletown 
Sunny Valley 
Hillside 

任意の提案ですか?

> 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" 

をそれが1つからなる任意の部分文字列を削除する理想的には私もここでdputだlastIndexOf()機能はR.

にありますかどうかを知りたいのですがより多くの空白文字、続いて任意の数の「単語」文字(空白、数字、またはアンダースコア)が続き、文字列の終わりが続きます。スペースで始まる部分文字列を置換しています

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

[1]「ミドル」「サニーバレー」「ヒルサイド」

+0

"Township、Borough、Village"、つまり最後の単語を取得したい場合はどうすればいいですか?それを新しい変数として保存しますか? – jacob

+1

stringiパッケージを使用できます。関数名は、stri_extract_last_wordsです。この関数に文のリストを与えることができ、それらの文の最後の単語のリストを返します。しかし、それは目的を削除するために、文から最後の単語を削除しません、私たちはJosh – rkmalaiya

12

ここでは何が必要ありません正規表現です文字列の末尾までの文字のみを含み、空の文字列を含みます。

+0

によって提供されるgsubコマンドが必要です+1この正規表現は、それがそのままの単語を残すので、より良い答えです。 – topchef