将数据框中的列转换为数字时,值不正确

时间:2018-03-17 09:24:01

标签: r dataframe

尝试使用Latitude转换数据框中的Longitudeas.numeric时,原始形式如下所示:

Latitude    Longitude
 12.05N      77.26E

我的值不正确。所以,我尝试以下列方式替换纬度中的N和经度中的E

dframe$Latitude  = as.numeric(dframe$Latitude)

dframe$Longitude  = as.numeric(dframe$Longitude)

经度的最终输出为79,纬度为4。这可能是什么原因?

1 个答案:

答案 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

给你数字。