当使用R将混合的纬度集从度分转换为十进制度时,如何避免由于南纬的负号而发生错误
How to avoid error ocuured due to minus sign of southern latitudes when mixed set of latitudes convert from degrees minutes to decimal degree using R
我在数据框中混合了北(正)和负纬度列的数据集以及单独的分钟列。我使用简单的 Lat + (minutes/60) 将其转换为十进制度数。
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
这个结果是正确的但是
> lat
[1] 7.1233333 -6.0716667 6.5433333 0.1483333 -0.2083333 6.4266667
[7] 8.1133333 -6.2383333 6.4100000 6.1266667
ifelse 语句在 R 控制台中提供正确的结果但未将其存储到向量中 "lat"
如果学位值为正,我需要将 minutes/60 添加到学位,如果学位值为负,我需要从学位中减去 minutes/60
此处使用 ifelse 的正确语法如下:
lat <- ifelse(lat1 < 0, lat1 - lat2 / 60, lat1 + lat2 / 60)
ifelse
returns 一个向量 where component i = lat1[i] - lat2[i] / 60
if lat[i] < 0
and lat[1] + lat2[i] / 60
otherwise 所以你不需要把赋值放在里面.
我在数据框中混合了北(正)和负纬度列的数据集以及单独的分钟列。我使用简单的 Lat + (minutes/60) 将其转换为十进制度数。
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
这个结果是正确的但是
> lat
[1] 7.1233333 -6.0716667 6.5433333 0.1483333 -0.2083333 6.4266667
[7] 8.1133333 -6.2383333 6.4100000 6.1266667
ifelse 语句在 R 控制台中提供正确的结果但未将其存储到向量中 "lat" 如果学位值为正,我需要将 minutes/60 添加到学位,如果学位值为负,我需要从学位中减去 minutes/60
此处使用 ifelse 的正确语法如下:
lat <- ifelse(lat1 < 0, lat1 - lat2 / 60, lat1 + lat2 / 60)
ifelse
returns 一个向量 where component i = lat1[i] - lat2[i] / 60
if lat[i] < 0
and lat[1] + lat2[i] / 60
otherwise 所以你不需要把赋值放在里面.