在fread("Dummy data.CSV", sep = "~")
:
Bumped column 22在数据行19257上键入字符,字段包含 '不适用'。在此列中强制先前读取的值 逻辑,整数或数字返回到可能不是的字符 无损;例如,如果' 00'和' 000'发生在他们现在之前 只是' 0',并且可能存在与','的处理不一致的问题。和 ',NA,'也是(如果它们发生在碰撞前的这一列中)。如果这 重要的是请重新运行并设置“colClasses'到了角色'为了这 柱。请注意,列类型检测使用前5行, 中间5行和最后5行,所以希望这条消息 应该是非常罕见的。如果向datatable-help报告,请重新运行 包括verbose = TRUE的输出。
我该如何解决这个问题?
答案 0 :(得分:4)
这不是错误,而是警告。 fread
查看文件的开头,中间和结尾以猜测列的数据类型。然后,当读取整个文件时,它可能碰到不符合先前确定的数据类型的值。在你的情况下,第22列已被猜测为逻辑,整数或数字,但它包含字符串" NOT APPLICABLE"。因此整个专栏变成了字符类型。 fread
警告您数据类型可能不是您通常期望的那些。
答案 1 :(得分:1)
实际上,这可能也是一个答案。
@ paljenczy的答案完美地解释了为什么你收到了警告,然后你可以使用na.strings = c("NA", "NOT APPLICABLE")
将这个字段变为NA
,如果这是可以接受的话。如果没有,请添加colClasses = list(character = 22)
以将整个列作为字符读取,然后按照您想要的方式处理它。
编辑:只有一条评论关于设置这个"不适用"价值为NA
。这可能不是一个好主意,因为不适用的是您将使用NA
或将整列投放到logical
,integer
或numeric
的信息。我的方法是创建一个新的二进制列,它将说明第22列中的相应值是作为数字给出还是"不适用"然后将整个列22转换为您想要的任何格式。