读取列中包含数字和字符的CSV数据

时间:2016-07-14 08:41:52

标签: r data.table

我正在尝试使用以下代码读取包含700万行的大型csv数据集

ClientApps\NewApp

有些列有奇数字符....请参阅下面的示例。

enter image description here

我收到以下错误代码

  

在fread(“HISTO_CA.csv”中,选择= c(1,237:248),sep =“;”,nrows =   1e + 06,:Bumped column 239在数据行198668上键入字符,   字段包含'™'?'。

将此列中先前读取的值从逻辑,整数或数字强制转换回可能不是无损的字符;例如,如果'00'和'000'在他们现在只是'0'之前发生,并且可能与',,'和',NA,'t

的处理不一致

如何导入数据并排除出现此问题的行

1 个答案:

答案 0 :(得分:1)

正如评论中所建议的那样,您可以将数据读作character类,并从那里开始工作:

library( data.table )
histca <- fread("HISTO_CA.csv", header = TRUE, colClasses = "character" )

因此,您将把csv文件中的所有文本带入R而不做任何更改。然后,您可以过滤掉任何行,例如,Col2不会转换为numeric类:

histca <- subset( histca, is.na( as.numeric( Col2 ) ) )

或者,您可以保留这些行,只需使用空字符串替换有问题的值,这些字符串将转换为数字NA值。

histca[ is.na( as.numeric( Col2 ) ), Col2 := "" ]

(请注意,这会向“NAs介绍”发出警告,但这就是你想要的)

然后将整个列转换为数字:

histca[ , Col2 := as.numeric( Col2 ) ]

现在会有一些NA值。