2016-03-29 15 views
-2

Ich habe die folgenden Daten mit Pipe abgegrenzt.R - Finden und Extrahieren von Daten aus Rohr-getrennte Daten

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 

möchte ich finden und extrahieren nur X, Y und Z, die begrenzt in Rohr vorhanden sind (zB: | X |, | Y |, | Z |). Die Herausforderung besteht darin, dass sie nicht für jede Aufzeichnung in der gleichen Position vorhanden sind.

Meine Ausgabe sollte sein.

X 
Y 
Z 
Y 
X 
+2

Hallo. Hast du es versucht? Es ist besser, wenn Sie etwas Code posten, werden Sie eher eine Antwort bekommen. –

Antwort

1

Verwendung sub,

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

oder

Wenn es innerhalb von zwei Rohren präsentieren sollte |x| dann können Sie die unten regex verwenden.

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

DEMO

+0

Vielen Dank Avinash !! Ich bin neu in der R-String-Handhabung. Wenn ich nicht X oder Y oder Z in den Daten habe, muss ich es mit NA aktualisieren. Kannst du mir bitte auch dabei helfen? –

+0

Sie müssen NA innerhalb einer Zeichenfolge hinzufügen? –

+0

Ja. Sagen wir, meine Daten sind ABC | 34567 | V | SDC | FRAGE, die nicht | X | enthält oder | Y | oder | Z | muss ich die Ausgabe als Nicht anwendbar (NA) aktualisieren. –