2017-03-29 2 views
1

Ich möchte verschiedene Breiten und Längen aus unstrukturierten Textdatei extrahieren. Die Koordinaten können diese Formen annehmen: "0,41566"; "-0,41566"; "21.36584785"; „100.2457Extrahieren unterschiedlicher Länge von Zahlen (Breite und Länge) von unstrukturierter Textdatei mit R

Diese Syntax funktioniert nur für Zahlen wie die 120,564874

library(stringr) 
lat <- c("([0-9]{3}) [.] ([0-9]{6})") 
essailat<-str_extract_all(essai,lat, simplify=F) 

Aber wie gesagt, ich würde alle anderen Formate oben dargestellt extrahieren möchten.

library(stringr) 
lat <- c("([0-9]{1}) [.] ([0-9]{4})", "([0-9]{3}) [.] ([0-9]{6})") 
essailat<-str_extract_all(essai,lat, simplify=F) 

Aber es funktioniert nicht scheint zu arbeiten. Plus manchmal, mein Lat ist eine negative Zahl (-0.41567), also möchte ich spezifizieren, dass es auch das negative Zeichen

extrahiert Vielen Dank im Voraus für Ihre Hilfe.

PS: das ist, was ich eine unstrukturierte Datei angeben wollte und als lon und lat arbeitet paarweise ich kann zuerst alle lat mit einer bestimmten Art von Format, aber alle auf einmal die Reihenfolge respektieren.

DANKE im Voraus für Ihre Hilfe!

Probeneingang:

cacacacacacaacacacacacaacacacacacacacacacacacacacacacacacacacacac"latitude":"900.252578";cacacacacacacacacacacacacacacaccacacacacacacacacacacacacacacacaccccacacacacaca"longitude":"0.997754"cacacacacacaacacacacacaacacacacacacacacacacacacacacacacacacacacac"latitude":"0.252578";cacacacacacacacacacacacacacacaccacacacacacacacacacacacacacacacaccccacacacacaca"longitude":"-0.997754"cacacacacacaacacacacacaacacacacacacacacacacacacacacacacacacacacac"latitude":"0.252578";cacacacacacacacacacacacacacacaccacacacacacacacacacacacacacacacaccccacacacacaca"longitude":"0.997754"cacacacacacaacacacacacaacacacacacacacacacacacacacacacacacacacacac"latitude":"0.252578";cacacacacacacacacacacacacacacaccacacacacacacacacacacacacacacacaccccacacacacaca"longitude":"0.997754"cacacacacacaacacacacacaacacacacacacacacacacacacacacacacacacacacac"latitude":"-0.252578";cacacacacacacacacacacacacacacaccacacacacacacacacacacacacacacacaccccacacacacaca"longitude":"0.997754"cacacacacacaacacacacacaacacacacacacacacacacacacacacacacacacacacac"latitude":"0.252578";cacacacacacacacacacacacacacacaccacacacacacacacacacacacacacacacaccccacacacacaca"longitude":"-0.997754"cacacacacacaacacacacacaacacacacacacacacacacacacacacacacacacacacac"latitude":"0.252578";cacacacacacacacacacacacacacacaccacacacacacacacacacacacacacacacaccccacacacacaca"longitude":"0.997754"cacacacacacaacacacacacaacacacacacacacacacacacacacacacacacacacacac"latitude":"0.252578";cacacacacacacacacacacacacacacaccacacacacacacacacacacacacacacacaccccacacacacaca"longitude":"0.997754"cacacacacacaacacacacacaacacacacacacacacacacacacacacacacacacacacac"latitude":"0.252578";cacacacacacacacacacacacacacacaccacacacacacacacacacacacacacacacaccccacacacacaca"longitude":"0.997754"cacacacacacaacacacacacaacacacacacacacacacacacacacacacacacacacac 

Antwort

1

Sie das folgende Update verwenden:

> library(stringr) 
> lat <- "-?[0-9]+\\.[0-9]+" 
> s <- "cacacacacacaacacacacacaacacacacacacacacacacacacacacacacacacacacac\"latitude\":\"900.252578\";cacacacacacacacacacacacacacacaccacacacacacacacacacacacacacacacaccccacacacacaca\"longitude\":\"0.997754\"cacacacacacaacacacacacaacacacacacacacacacacacacacacacacacacacacac\"latitude\":\"0.252578\";cacacacacacacacacacacacacacacaccacacacacacacacacacacacacacacacaccccacacacacaca\"longitude\":\"-0.997754\"cacacacacacaacacacacacaacacacacacacacacacacacacacacacacacacacacac\"latitude\":\"0.252578\";cacacacacacacacacacacacacacacaccacacacacacacacacacacacacacacacaccccacacacacaca\"longitude\":\"0.997754\"cacacacacacaacacacacacaacacacacacacacacacacacacacacacacacacacacac\"latitude\":\"0.252578\";cacacacacacacacacacacacacacacaccacacacacacacacacacacacacacacacaccccacacacacaca\"longitude\":\"0.997754\"cacacacacacaacacacacacaacacacacacacacacacacacacacacacacacacacacac\"latitude\":\"-0.252578\";cacacacacacacacacacacacacacacaccacacacacacacacacacacacacacacacaccccacacacacaca\"longitude\":\"0.997754\"cacacacacacaacacacacacaacacacacacacacacacacacacacacacacacacacacac\"latitude\":\"0.252578\";cacacacacacacacacacacacacacacaccacacacacacacacacacacacacacacacaccccacacacacaca\"longitude\":\"-0.997754\"cacacacacacaacacacacacaacacacacacacacacacacacacacacacacacacacacac\"latitude\":\"0.252578\";cacacacacacacacacacacacacacacaccacacacacacacacacacacacacacacacaccccacacacacaca\"longitude\":\"0.997754\"cacacacacacaacacacacacaacacacacacacacacacacacacacacacacacacacacac\"latitude\":\"0.252578\";cacacacacacacacacacacacacacacaccacacacacacacacacacacacacacacacaccccacacacacaca\"longitude\":\"0.997754\"cacacacacacaacacacacacaacacacacacacacacacacacacacacacacacacacacac\"latitude\":\"0.252578\";cacacacacacacacacacacacacacacaccacacacacacacacacacacacacacacacaccccacacacacaca\"longitude\":\"0.997754\"cacacacacacaacacacacacaacacacacacacacacacacacacacacacacacacacac" 
> essailat<-str_extract_all(s,lat) 
> essailat 
[[1]] 
[1] "900.252578" "0.997754" "0.252578" "-0.997754" "0.252578" "0.997754" "0.252578" "0.997754" 
[9] "-0.252578" "0.997754" "0.252578" "-0.997754" "0.252578" "0.997754" "0.252578" "0.997754" 
[17] "0.252578" "0.997754" 

Die -?[0-9]+\\.[0-9]+ regex wird ein optionales -, passen dann 1+ Ziffern, eine wörtliche . und wieder 1+ Ziffern.

Siehe regex demo online.

+0

DANKE SEHR VIEL! – Paolo

Verwandte Themen