首页 > 解决方案 > 读取csv文件后如何将因子类型转换为R中的数字类型?

问题描述

读取 csv 文件后

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

我将所有数字变量factor作为类型,特别是最后一列。 在此处输入图像描述

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

Warning message:
NAs introduced by coercion 

甚至在这篇文章中也提到了一些人:

“这篇文章中的每个答案都未能为我生成结果,正在生成 NA。”

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

附录:在下图中,您可以看到此处建议的一种可能方法

在此处输入图像描述

但是,我总是一样NA

标签: r

解决方案


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

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

你可以在一行代码中做到这一点,

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

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

首先,一些文件使用分号作为列分隔符。这在小数点为逗号的国家非常常用。这就是为什么 R 有两个函数来读取 CSV 格式的文件。

这些函数都是对read.table一些默认值的调用。

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

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

其次,如果在读取数据时从一开始就factor使用参数,则可以避免问题。stringsAsFactors = FALSE


推荐阅读