尝试使用Latitude
转换数据框中的Longitude
和as.numeric
时,原始形式如下所示:
Latitude Longitude
12.05N 77.26E
我的值不正确。所以,我尝试以下列方式替换纬度中的N
和经度中的E
:
dframe$Latitude = as.numeric(dframe$Latitude)
dframe$Longitude = as.numeric(dframe$Longitude)
经度的最终输出为79
,纬度为4
。这可能是什么原因?
答案 0 :(得分:2)
通常情况下,将字符对象转换为数字不是一个非常好的数字会产生NA
:
> Z = c("23.2N","12.4N")
> as.numeric(Z)
[1] NA NA
Warning message:
NAs introduced by coercion
所以你必须拥有别的东西,我怀疑它是factor
:
> Z = factor(c("23.2N","12.4N"))
> as.numeric(Z)
[1] 2 1
因子的数值是因子中不同值的数量的索引 - 它们用于分类数据。我怀疑您可能已使用read.csv
阅读了数据而未查看stringsAsFactors
选项。无论如何。您可以将因子转换为字符以获取您看到的值而不是基础索引号:
> Z = factor(c("23.2N","12.4N"))
> as.numeric(as.character(Z))
[1] NA NA
Warning message:
NAs introduced by coercion
现在我们得到NA
,因为"N"
弄乱了数字格式,所以我们可以将所有"N"
替换为空并转换:
> as.numeric(gsub("N","",as.character(Z)))
[1] 23.2 12.4
给你数字。