将因子转换为数字

时间:2014-06-25 16:05:33

标签: r csv numeric type-conversion

我试图将数据框(X.2)的其中一列(frost)从因子转换为数字。当我仅尝试使用X.2而不是frost$X.2时,它似乎可以正常运行 我问str(frost)该列仍然是一个因素。

frost=read.csv2("Database_REL_Umea_aktuell.csv")
frost

as.numeric(as.character(frost$X.2))
[1] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
 [28] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
 [55] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
 [82] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
[109] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
[136] NA NA
Warning message:
NAs introduced by coercion

str(frost)

'data.frame':   137 obs. of  6 variables:
 $ Database.frost.damage.Umea: Factor w/ 7 levels "","Hylocomium splendens (HS)",..: 1 5 3 3 3 3 3 3 3 3 ...
 $ X                         : Factor w/ 5 levels "","C","SR1","SR10",..: 1 5 4 4 4 4 4 4 4 4 ...
 $ X.1                       : Factor w/ 11 levels "","C-1","C-2",..: 1 5 9 9 9 10 10 10 11 11 ...
 $ X.2                       : Factor w/ 136 levels "","0,012573",..: 1 136 110 99 129 105 82 112 94 69 ...
 $ X.3                       : Factor w/ 5 levels "","a","b","c",..: 1 5 2 3 4 2 3 4 2 3 ...
 $ X.4                       : logi  NA NA NA NA NA NA ...

有人不知道为什么它不起作用? 谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

当您输入时,

as.numeric(as.character(frost$X.2))

它不会改变数据框中的任何内容,只是将其打印在屏幕上。

至于你获得NAs的原因,看起来你有几个空白的观察或观察形式" X,XXXX"当你这样做时,它们将被转换为NA。

所以尝试将它们转换为表格" X.XXX"然后转换为数字:

frost$X.2 <- sapply(sapply(frost$X.2, gsub, patt=",", replace="."), as.numeric)