我有一个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
答案 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位数字是否正确。