将GPS位置转换为小数位数

时间:2019-07-10 10:12:42

标签: r

我有一个data.frame,需要在其中将latitudeE7和经度E7转换为小数。

我发现了一些非常有效的方法。

但它不会显示所有数字。

DF <- data.frame(timestampMs=c("1546585987278","1546585866293","1546585847084","1546585738420","1546585613737","1546585493169"),
                 latitudeE7=c(356273747,356273747,356315165,
                              356585848,357100674,357038755),                                                                
                 longitudeE7=c(1398768447,1398768447,1398779562,
                               1397432442,1398085117,1398109875))

我使用了这两种方法

DF$lat = DF$latitudeE7 / 10000000
DF$lon = DF$longitudeE7 / 1e7

我明白了

       timestampMs   latitudeE7   longitudeE7      lat       lon
 1   1546585987278    356273747    1398768447   35.62737   139.8768
 2   1546585866293    356273747    1398768447   35.62737   139.8768
 3   1546585847084    356315165    1398779562   35.63152   139.8780
 4   1546585738420    356585848    1397432442   35.65858   139.7432
 5   1546585613737    357100674    1398085117   35.71007   139.8085
 6   1546585493169    357038755    1398109875   35.70388   139.8110

您会看到lat和lon后面的数字并未全部显示。

即使我使用回合(DF $ latitudeE7 / 10000000,digits = 7),它仍然具有相同的结果。

我希望得到这样的结果。有问题吗?

       timestampMs   latitudeE7   longitudeE7       lat            lon
 1   1546585987278    356273747    1398768447   35.6273747   139.8768447
 2   1546585866293    356273747    1398768447   35.6273747   139.8768447
 3   1546585847084    356315165    1398779562   35.6315165   139.8779562
 4   1546585738420    356585848    1397432442   35.6585848   139.7432442
 5   1546585613737    357100674    1398085117   35.7100674   139.8085117
 6   1546585493169    357038755    1398109875   35.7038755   139.8109875

2 个答案:

答案 0 :(得分:2)

数字正确存储,只是看不见。如果要查看更多信息,请更改数字的全局选项:

options(digits = 10)

#### OUTPUT ####

    timestampMs latitudeE7 longitudeE7        lat         lon
1 1546585987278  356273747  1398768447 35.6273747 139.8768447
2 1546585866293  356273747  1398768447 35.6273747 139.8768447
3 1546585847084  356315165  1398779562 35.6315165 139.8779562
4 1546585738420  356585848  1397432442 35.6585848 139.7432442
5 1546585613737  357100674  1398085117 35.7100674 139.8085117
6 1546585493169  357038755  1398109875 35.7038755 139.8109875

答案 1 :(得分:0)

我认为这里没有任何问题,只是以这种方式打印,但是R在内部存储这些数字。

如果您想确定这一点,可以尝试:

format(DF$lat[1], digits=7)

并检查所有7位数字是否正确。