2016-09-09 11 views
0

の値の一部を置き換えます。は、私はこのようなデータフレームを持つデータフレームの所定の列

TAGNAME         VALUE 
XX:YY:ZZ:WXYX:title_for_this.and_that_a 20.2 
PP:YY:ZZ:ABCF:title_for_this.and_that_b 45.7 
QQ:YY:ZZ:FGHJ:title_for_this.and_that_c 27.2 
RR:YY:ZZ:JYHG:title_for_this.and_that_d 30.9 

私は最後のコロンの前に発生TAGNAMEからすべての文字を削除する必要があります。だから私はそれ、これを必要とするもの:

TAGNAME      VALUE 
title_for_this.and_that_a 20.2 
title_for_this.and_that_b 45.7 
title_for_this.and_that_c 27.2 
title_for_this.and_that_d 30.9 

私が使用して最後のコロンの前のすべての文字を取得することができます:

tagnames <- sapply(strsplit(data_frame$TAGNAME, "\\:[^\\:]*$"), "[", 1) 

私はこのようなTAGNAMEから文字をGSUBするためにこれを使用してみました:

for(i in 1:nrow(data_frame)) { 
    data_frame[i,1] <- gsub(data_frame[i,1], tagnames[i],'') 
} 

これは、データフレームをループする非常に難しい方法ですが、機能しません。

+0

これを使用すると「下付き文字が外に出ます」 – Cybernetic

+0

正直言ってテストしませんでしたが、[これを見てください](http://stackoverflow.com/questions/24938616/string-split-on-last) -comma-in-r) – Sotos

答えて

2
df$TAGNAME = sub(".*:","", df$TAGNAME) 

正規表現の、について説明 "*:"
。 0文字以上の文字を選択してください。
正規表現の詳細については、this websiteを参照してください。

+2

'gsub'はすでにベクトル化されています –

+0

本当に、それを指摘して編集してくれてありがとう。 – Haboryme

+0

お望みなら、欲張りな正規表現がどのように機能するかについていくつかの助けを加えてください。 –

関連する問題