读取制表符分隔数据到R

时间:2012-07-26 18:41:00

标签: r csv import-from-csv

我正在尝试将一个大的制表符分隔文件读入R。

首先我尝试了这个:

data <- read.table("data.csv", sep="\t")

但它正在读取一些数字变量作为因子

所以我尝试根据我希望每个变量的类型读取数据:

data <- read.table("data.csv", sep="\t", colClasses=c("character","numeric","numeric","character","boolean","numeric"))

但是当我尝试这个时它给了我一个错误:

  

扫描错误(文件,内容,nmax,sep,dec,quote,skip,nlines,na.strings,:     scan()期望'真实',得到''4“'

我认为可能是原始原始文件中的某些数值有引号,但我不确定。

2 个答案:

答案 0 :(得分:8)

如果没有看到您的数据,您就会遇到以下几种情况之一:您没有将所有数据分开;在单个观察中有嵌入的标签;或者其他人。

您可以对此进行排序的方法是设置options(stringsAsFactors=FALSE)然后使用您的第一行。

查看str(data)并尝试确定哪些行是罪魁祸首。一些数值作为因子读取的原因是因为该列中有一些东西将R解释为一个字符,因此它将整个列强制转换为字符。它通常需要一些挖掘,但问题几乎肯定与您的输入文件有关。

这是一个常见的数据问题,祝你好运!

答案 1 :(得分:1)

x <- paste("'",floor(runif(10,0,10)),"'",sep="")
x

 [1] "'7'" "'3'" "'0'" "'3'" "'9'" "'1'" "'4'" "'8'" "'5'" "'8'"

as.numeric(gsub("'", "",x))

 [1] 7 3 0 3 9 1 4 8 5 8