2016-07-12 21 views
1

Ich versuche, in einem Datensatz der Koordinaten im britischen National Grid-System zu lesen, mit dem Befehl read.xlsx. Dies sind die Daten:Fehler in der Anzahl der Dezimalstellen mit read.xlsx

NORTHING EASTING TOC ELEVATION WELL ID 
1194228.31 2254272.83 117.30 AA-1 
1194227.81 2254193.90 114.91 AA-2 
1194228.41 2254116.26 114.76 AA-3 
1194229.37 2254039.57 112.81 AA-4 
1194227.09 2253960.17 112.10 AA-5 

und dies ist mein Code:

coordinates <- read.xlsx2("Coordinates.xlsx",sheetName = "Sheet1", 
         startRow = 1,endRow = 111, colIndex = c(1:4), 
       colClasses = c("character","character","numeric","character")) 

Das Problem ist, meine Ausgabe wie folgt aussieht:

NORTHING EASTING TOC.ELEVATION WELL.ID 1 1194228 2254273 117.30 AA-1 2 1194228 2254194 114.91 AA-2 3 1194228 2254116 114.76 AA-3 4 1194229 2254040 112.81 AA-4 5 1194227 2253960 112.10 AA-5 6 1194227 2253880 110.98 AA-6

Die Befehl umrundet die horizontalen und vertikalen Koordinaten Und obwohl das kein großes Problem ist, möchte ich so genau wie möglich sein. Gibt es einen Workaround dafür? Ich konnte auch nichts in den Optionen zur colClasses Option finden.

+2

Warum lesen Sie in den Norden und Osten als Zeichen? –

+0

Sorry, das war ein Fehler meinerseits. Ich habe sie anfangs als numerisch gelesen, aber als ich sie aufgerundet fand, lese ich sie als Zeichen ein und hoffe, sie später in Zahlen umzuwandeln. Aber als ich das tat, stellte ich fest, dass sie sowieso abgerundet waren. – user3258696

Antwort

3

Dies ist ein Problem, wie R die Daten ausdruckt (es ist im Allgemeinen bequem nicht, um die vollständige Darstellung von Fließkommadaten zu geben); Sie haben tatsächlich keine Präzision verloren.

Illustrieren mit read.table anstatt read.xlsx (wir werden am selben Ort enden). (Wenn ich die Daten mit colClasses unter Angabe von "character" lese, bekomme ich alle Ziffern angezeigt, aber ich habe auch einen ziemlich nutzlosen Datenrahmen, wenn ich etwas Sinnvolles mit den Northings und eastings-Variablen machen möchte ...)

dat <- read.table(header=TRUE, 
text=" 
NORTHING EASTING TOC.ELEVATION WELL.ID 
1194228.31 2254272.83 117.30 AA-1 
1194227.81 2254193.90 114.91 AA-2 
1194228.41 2254116.26 114.76 AA-3 
1194229.37 2254039.57 112.81 AA-4 
1194227.09 2253960.17 112.10 AA-5") 

Dies ist, wie R den Datenrahmen druckt:

# NORTHING EASTING TOC.ELEVATION WELL.ID 
# 1 1194228 2254273  117.30 AA-1 
# 2 1194228 2254194  114.91 AA-2 
# 3 1194228 2254116  114.76 AA-3 
# 4 1194229 2254040  112.81 AA-4 
# 5 1194227 2253960  112.10 AA-5 

Aber es ist immer noch möglich, alle die Präzision, um zu sehen, dass immer noch da ...

print(dat$NORTHING,digits=12) 
## [1] 1194228.31 1194227.81 1194228.41 1194229.37 1194227.09 

Sie könnten auch print(dat,digits=12) oder setzen options(digits=12) global ...

Verwandte Themen