2017-03-31 4 views
0

うまくいけば、これはかなり単純な質問です。私は、作業中のデータの一部をサブセット化するためにRを使用しています。私が現在取り組んでいるデータのうち、print()があります。 JobCodeに基づいてデータのsubset()を作成しようとしています。あなたが見ることができるように、JobCodeは特定の業界で最初の2つの数字が同じパターン(00 - 0000)に従います。パターンに従う値のサブセット

  ID State   StateName JobCode 
      1 AL   Alabama 51-9199 
      2 AL   Alabama 27-3011 
      4 AL   Alabama 49-9043 
      5 AL   Alabama 49-2097 

私の現在の試行が使用するこのtest <- subset(data, data$State == "AL" & data$JobCode == ("15-####"))「15-」で始まるJOBCODEためサブセットに(#は、残りの4つの値のプレースホルダです)。残りの4つの値を探すようにサブセットに指示する方法はありますか?

私はStackOverflowを初めて使用しているため、フォーマットが貧弱だと申し訳なく思っています。私もRには慣れていません。ご協力いただきありがとうございます。

+1

を、正規表現は、(Rまたは何か他のものを使用しているかどうか)それを扱うことができます。 Rのドキュメントのコンソールに '?regex'と入力してください。あるいは、開始が常に固定幅であれば、 '?substring'を見ることができます。 – Frank

+1

@Frankトピックに関する私の知識を大いに助けてくれた '?正規表現 'に向かって私を指摘してくれてありがとう。私はまだRのすべての構文ニュアンスを学んでいます。 – pc8807

答えて

1

文字列の等価性にワイルドカード文字がありません。あなたは関数を使う必要があります。また、あなたがsubset()パラメータ内data$を使用する必要がないことに注意して最初の3 charcters

test <- subset(data, State == "AL" & substr(JobCode,1,3) == ("15-")) 

を抽出するために substr()を使用することができます。変数は、その関数のデータフレームのコンテキストでエバリュエートされます。あなたが data.tableライブラリの %like%演算子を使用することができます

+0

素晴らしい、ありがとう@MrFlick。それはうまくいった。 'data $'コールアウトについても共有しています。 – pc8807

1

:テキスト中のパターンについて

library(data.table) 

setDT(df) 

df[ State == "AL" & JobCode %like% "15-" ] 
関連する問題