我正在尝试使用以下代码读取包含700万行的大型csv数据集
ClientApps\NewApp
有些列有奇数字符....请参阅下面的示例。
我收到以下错误代码
在fread(“HISTO_CA.csv”中,选择= c(1,237:248),sep =“;”,nrows = 1e + 06,:Bumped column 239在数据行198668上键入字符, 字段包含'™'?'。
将此列中先前读取的值从逻辑,整数或数字强制转换回可能不是无损的字符;例如,如果'00'和'000'在他们现在只是'0'之前发生,并且可能与',,'和',NA,'t
的处理不一致如何导入数据并排除出现此问题的行
答案 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
值。