2016-04-29 68 views
-2

fread("Dummy data.CSV", sep = "~")数据被适当地使用data.table不读::的fread

撞到塔22的键入数据行19257字符,字段包含 “不适用”。强制先前读取 逻辑,整数或数字这一列中的值返回到可能不是 无损的字符;例如,如果'00'和'000'现在在 之前发生,只是'0',并且可能与',,'和 ',NA'的处理不一致(如果它们出现在此列之前凹凸)。如果此 事宜请重新运行并将此colcolles设置为此字符的“字符”。请注意,列类型检测使用前5行, 中间5行和最后5行,所以希望此消息 应该非常少见。如果要报告给datatable-help,请重新运行,并且包含来自verbose = TRUE的输出。

我该如何解决这个问题?

+4

你看过警告了吗?这很清楚。 – Arun

回答

2

这不是一个错误,而是一个警告。 fread查看文件的开始,中间和结尾以猜测列的数据类型。然后,当读取整个文件时,它可能碰到不符合先前确定的数据类型的值。在你的案例中,第22列已被猜测为逻辑,整数或数字,但它包含字符串“NOT APPLICABLE”。因此整列变成了字符类型。 fread提醒您数据类型可能不是您通常期望的数据类型。

1

其实这也可能是一个答案。

@ paljenczy的回答完美地解释了为什么你得到了警告,那么你可以使用na.strings = c("NA", "NOT APPLICABLE")来把这个字段变成NA,如果这是可以接受的。如果不是,请添加colClasses = list(character = 22)以将整列读取为字符,然后处理它所需的信息。

编辑:关于将此“不适用”值设置为NA的一条评论。这可能不是一个好主意,因为不适用的是一条信息,您将使用NA或将整列转换为logicalintegernumeric。我的方法是创建一个新的二进制列,它将指出列22中的相应值是以数字还是“不适用”的形式给出,然后将整列22转换为您想要的任何格式。

+0

Colclasses工作。使用Fread读取数据时的更多信息可以将数字变量转换为整数。例如: - 在数据中,我有4个变量,其中一个是数字,所以使用fread(会自动检测变量的类型)将数值变量作为整数变量导入。 –

+0

在'integer = colNum'中使用'colClasses()',你将会失去一些准确性(参见http://stackoverflow.com/questions/11638303/how-to-convert-num-to-int-in-r )。如果这能奏效,你可以接受答案来标记你不需要新的。 –

相关问题