2016-07-27 40 views
0

Ich habe einen gemischten Datensatz der Spalten Nord (positiv) und Negative Breite und separate Spalte Minuten in Daten Rahmen. Ich habe einfach Lat + (Minuten/60) verwendet, um dies in Dezimalgrade umzuwandeln.Wie man Fehler vermeidet, die wegen des Minuszeichens der südlichen Breitengrade auftreten, wenn gemischte Breitengrade von Grad Minuten in Dezimalgrad umrechnen unter Verwendung von R

lat1 <- c(7, -7, 6, -0, -1, 6, 8, -7, 6, 6) 
lat2 <- c(7.4, 55.7, 32.6, 8.9, 47.5, 25.6, 6.8, 45.7, 24.6, 7.6) 

ifelse(lat1<0,(lat <- lat1-(lat2/60)),(lat <- lat1+(lat2/60))) 

>[1] 7.1233333 -7.9283333 6.5433333 0.1483333 -1.7916667 6.4266667 
[7] 8.1133333 -7.7616667 6.4100000 6.1266667 

dieses Ergebnis ist korrekt, aber

> lat 
[1] 7.1233333 -6.0716667 6.5433333 0.1483333 -0.2083333 6.4266667 
[7] 8.1133333 -6.2383333 6.4100000 6.1266667 

ifelse Aussage korrekte Ergebnis in R-Konsole zur Verfügung stellen, aber nicht, um es „lat“ gespeichert Vektor I Minuten hinzufügen müssen/60 Grad, wenn Grad Wert ist positiv und Minuten/60 von Grad subtrahieren, wenn Gradwert

Antwort

0

die korrekte Syntax ifelse hier zu verwenden, ist die folgende negativ ist:

lat <- ifelse(lat1 < 0, lat1 - lat2/60, lat1 + lat2/60) 

ifelse liefert einen Vektor, wo die Komponente i = lat1[i] - lat2[i]/60 wenn lat[i] < 0 und lat[1] + lat2[i]/60 sonst, so dass Sie die Zuordnung nicht einfügen müssen.