2016-03-29 15 views
-2

パイプで区切られた以下のデータがあります。R - パイプで区切られたデータからデータを検索して抽出します

ABC|12345|H|QWA|**X**|DFC-FED| MULTIPLE ENTRY 

PQR|67890|D|WAS|||**Y**|OKA| UPDATE 

XYZ|34567|V|**Z**|SDC| QUESTION 

ASD|23412|G|QAS|||**Y**|BUT| DELETE 

AFD|65432|H|**X**|AVB| QUESTION 

は私が区切らパイプ内に存在している唯一のX、Y、およびZ見つけて抽出する(例の場合:| X |、| Y |、| Z |)。ここでの課題は、すべてのレコードで同じ位置に存在しないことです。

私の出力は以下の通りです。

X 
Y 
Z 
Y 
X 
+2

こんにちは。あなたは行き​​ましたか?コードを投稿すると、回答が得られる可能性が高くなります。 –

答えて

1

使用サブ、

sub(".*(^|\\|)([XYZ])(\\||$).*", "\\2", x) 

または

それは2本のパイプ|x|の内側に提示しなければならないならば、あなたは以下の正規表現を使用することができます。

sub(".*\\|([XYZ])\\|.*", "\\1", x) 

DEMO

+0

ありがとう、Avinash!私はRの文字列処理に新しいです。データにX、Y、Zがない場合は、NAで更新する必要があります。このことについても私を助けてください。 –

+0

文字列の中にNAを追加する必要がありますか? –

+0

うん。私のデータはABC | 34567 | V | SDC | | X |を含んでいないQUESTIONまたは| Y |または| Z |の場合、出力をNot Applicable(NA)として更新する必要があります。 –

関連する問題