读取csv文件后,如何在R中将因子类型转换为数字类型?

时间:2018-06-19 15:12:58

标签: r

读取csv文件后

data<-read.table(paste0('C:/Users/data/','30092017ARB.csv'),header=TRUE, sep=";")

我获得了所有数字变量factor作为类型,特别是对于最后一列。 enter image description here

我尝试了所有建议here,但是我收到所有建议的警告

Warning message:
NAs introduced by coercion 

甚至有人在这篇文章中提到:

“此帖子中的每个答案都无法为我生成结果,正在生成NA。”

知道如何解决这个问题吗?

附录:在以下图片中,您可以看到here

中建议的一种可能方法

enter image description here

但是,我总是得到相同的NA

1 个答案:

答案 0 :(得分:0)

百分号显然是问题所在。将"%"替换为空字符串"",然后转换为数字。

data[[3]] <- sub("%", "", data[[3]]) 
data[[3]] <- as.numeric(data[[3]])

您可以在一行代码中完成

data[[3]] <- as.numeric(sub("%", "", data[[3]]))

此外,关于读取数据的两个注意事项。

首先,某些文件使用分号作为列分隔符。在小数点是逗号的国家/地区中非常常用。这就是为什么R具有 two 函数来读取CSV格式的文件的原因。

这两个函数都是对read.table的调用,但其中一些默认设置已更改。

  • read.csv-设置参数header = TRUEsep = ","
  • read.csv2-设置参数header = TRUEsep = ";"dec = ","

有关完整说明,请参见read.table或在R提示符下运行help("read.table")

第二,如果在读取数据时从头开始使用参数factor,则可以避免stringsAsFactors = FALSE问题。