2017-03-23 2 views
1

ich einen Datenrahmen haben, wie unten angegeben:Charakter Entfernen von String in R

data$Latitude 
"+28.666428" "+28.666470" "+28.666376" "+28.666441" "+28.666330" "+28.666391" 

str(data$Latitude) 
Factor w/ 1368 levels "+10.037451","+10.037457",.. 

ich das Zeichen „+“ von jedem der Latitude Werte entfernen möchten. Ich versuchte gsub()

data$Latitude<-gsub("+","",as.character(factor(data$Latitude))) 

mit dieser nicht funktioniert.

+4

hinzufügen 'fixed = true' in' gsub' oder entkommen es '\\ +' – Sotos

+1

Oder einfach nur 'as.numeric (as.character (" + 28.666428 "))'. –

+1

@Sotos: Danke Kumpel..das funktioniert .. auch die Antwort war schnell :) –

Antwort

0

Sie können eine Kombination von , substring und regexpr verwenden, um das Ergebnis zu erzielen.
regexpr(<character>,<vector>)[1] gibt Ihnen den Index des Zeichens.
Mit dem Wert als Startindex für substring kann der Rest der Zeichenfolge getrennt werden.
sapply können Sie die Werte durchlaufen.

Hier sind die Daten.

d<-c("+28.666428","+28.666470","+28.666376","+28.666441","+28.666330") 

Hier ist die Logik.

v <- sapply(d, FUN = function(d){substring(d, regexpr('+',d) + 1, nchar(d))}, USE.NAMES=FALSE) 

Hier ist die Ausgabe

> v 
[1] "28.666428" "28.666470" "28.666376" "28.666441" "28.666330" "28.666391" 
+2

'regexpr ('+', d)' tut nicht, was Sie denken, dass es tut (versuchen Sie es mit 'd = 'foo'') - Ich bin mir nicht ganz sicher, warum R das überhaupt akzeptiert, da es ein ungültiger regulärer Ausdruck ist, und es sollte einen Fehler auslösen. Darüber hinaus ist diese Lösung extrem verworren. 'gsub' funktioniert genauso gut. –