2017-03-25 19 views
0

のデータフレームからの記号の後、私は私が$シンボル以下のすべての文字を削除したい文字列のデータフレームを持っています。スペース、/以外の特殊文字、または数解析N文字の文字列

strings <- data.frame("strings"=c("String test $ABCD","$BGI test", 
"super weird $nabc test","$500 giveway","another $Abc/a test")) 

があるまで私は、私はgrepl("^\\$",strings)を使用して$で始まるすべての文字列のためにそれを把握することができましたが、私はどこの文字列をしないのです手紙をしたいです$は、たとえば文字列の中央にあります。

ABCD 
BGI 
nabc 
Abc/a 

ので$を見つけ、spaceがあるまで、すべてのcharactersを保持greplを使用する方法または類似した何かを見つけよう:また、$0:9

出力目標はされている任意の文字列を削除したいです/

以外、number、またはspecial character/が最も重要である場合は、しかし、すべてのことは素晴らしいことだ組み込むための方法を考え出すことができれば!ありがとう。

+0

これらの文字を削除するか、それらの文字のみを抽出しますか?あなたは(あなたが$ 500逃したことを除いて)これらの文字列を抽出したいようなあなたの提案出力が見えます – G5W

+0

私は、データフレームからそれらを抽出したい - 私は のオフ$ 500の除外が動作する新しいデータフレームを作成するために、抽出を使用します。意図的だったので、最初の文字が '$' – Mz2rA

+0

に続く文字であれば抽出したいだけです。私の答えは変わります。 – G5W

答えて

0
gsub(".*\\$([a-zA-Z][a-zA-Z\\/]*).*", "\\1", 
    strings$strings[grepl("\\$[a-zA-Z]", strings$strings)], perl=TRUE) 
[1] "ABCD" "BGI" "nabc" "Abc/a" 

更新:OPは後に含める/文字にないを尋ねました。それは次のようにして実現できます:

gsub(".*\\$([a-zA-Z][a-zA-Z]*).*", "\\1", 
     strings$strings[grepl("\\$[a-zA-Z]", strings$strings)], perl=TRUE) 
[1] "ABCD" "BGI" "nabc" "Abc" 
+0

うわー、これは信じられないほどありがとう! 1つの問題は、 '/'記号の後に文字列が残っていることです。私は結果を検討し、実際に(ので、新しい最後の結果は 'Abc'代わりにAbcの'の/ A'になるだけで文字を維持するために、総理にかなっています。 – Mz2rA

+0

ああ、あなたが/?私は私の答えを変更しますで停止します。 – G5W

+0

ええ?それはまだあなたがアドバイスしてくださいすることができ – Mz2rA