我在文本中有大量的空间数据集。我需要将degrees.decimal值转换为十进制度。我的代码如下。除了0到-1之外,它的值很好。 0到-1之间的值通过as.numeric()转换为正值 坐标转换方法很好,但问题是如何在iflese语句中传递零(-0)值。 我是如何克服这个问题的?
data <- c("-7ø12.2","-1ø23.0","-0ø50.3","0ø14.6","2ø59.7")
# latitudes in degree minutes.decimal format
lat1 <- as.numeric(gsub( "ø.*$", "", data)) # substring befor ø
lat2 <- as.numeric(sub(".*ø", "", data)) # substring after ø
lat <- ifelse(lat1 < 0, lat1 - lat2 / 60, lat1 + lat2 / 60)
LAT1 [1] -7 -1 0 0 2
答案 0 :(得分:0)
您正在测试lat1 < 0
,但lat1[3]
为0
,因此测试失败,您的ifelse
点击了添加结果。您似乎希望-0
保持否定,但不是0
的工作方式。
添加另一个提取(负号):
neg <- substr(data, 1, 1)
neg
#> [1] "-" "-" "-" "0" "2"
并测试而不是lat1 < 0
ifelse(neg == "-", lat1 - lat2 / 60, lat1 + lat2 / 60)
#> [1] -7.2033333 -1.3833333 -0.8383333 0.2433333 2.9950000