2016-06-19 12 views
0

背景問題保持:は、比類のないregmatchesと文字列(R)

を現在我々は彼らに製品コードを持っているそのうちのいくつかの項目の記述(1278台のOBS)、のリストを持っています。たとえば、(「REF VLOC0004 V LOC 3/0 15CM SUTURE DEVICE」)、コードはVLOC0004になります。

私はこれをExcelファイルとして保存しています。説明欄の横に、各説明の横に項目コードを記入しておきます。

行わ現在の仕事:私はRにデータをロードするために管理し、(私はの仕事までないです感じれば、私はこれをrevistも正規表現のために自分のパターンを書き込むことができる午前いる

コードのいくつかの文字列をピックアップする)。例:Rコード。

# Pattern 
p=("([A-Z]*[0-9]{4,}[A-Z]*)|([0-9]+[:punct:][0-9]+)|([0-9]+[:punct:][0-9]+[:punct:][0-9]+)") 
# Match data from regexpr() 
m<-regexpr(p,EGIA$LGY_DHB_ITEM_DESCRIPTION) 

問題:私は上記のパターンを抽出するためにregmatchesを実行すると

、それだけ抽出はマッチを発見し、その中の無いコードで記述を無視します。その結果、長さ608のベクトルが作成されます。商品説明の横にこの列を使用すると、コードは説明と一致しません。私が必要とするのは、このベクトルが何らかの理由でアイテムコードが見つからない空白の場所を与えて、この抽出ベクトルがアイテムの説明と同じ長さになるようにすることです。

私は逆のコマンドで周りを回ったが、うまくいかなかった。これについての助けに感謝します、私は正規表現とこのサイトで多数のチュートリアルを見てきましたが、情報には圧倒されていません。

+0

出力結果を提供できますか? – hwnd

+0

私はイラストレーションをしようとしましたが、ここでは比較的新しいものです。テキストを列などに並べることができませんでした。Excelの例のスクリーンショットをリンクする方法はありますか? – Thomas2016

+0

私はこの重複した質問を忘れてしまったようです。申し訳ありません。副作用、私は " - "で区切られた数字を探したかった。私はこのシンボルを使用し、パターンはうまく拾われました。私はそれを[:punct;]に置き換えましたが、今は見つからないでしょう。私は[:punct;]を使用して、将来別の句読点を持つコードを拾いたいと考えていました。 – Thomas2016

答えて

0

str_detect + ifelseの簡単な組み合わせが可能です。確かにこれを行うには他にも多くの方法があります。

library(stringr) 
str <- c("ab", "bc", "cd") 
yes <- str_detect(str, "c") 
ifelse(yes==T, "c", NA) 
#NA "c" "c" 
関連する問題