data.table :: fread一个`integer64`类型,只为一列手动覆盖colClass

时间:2018-02-17 05:35:13

标签: r data.table

我有一个.csv,其中一列ID包含一个前导零的长整数。 fread将其转换为integer64类型。如何为一列指定类,然后让fread自动猜测其余列的类?不确定这是否是“全有或全无”的情况。

我有50多个列,而不是必须为所有这些列指定数据类型,因为我必须为其中一个列。

我的问题与:R fread - read all columns as character

有关

2 个答案:

答案 0 :(得分:6)

来自?fread

# colClasses
data = "A,B,C,D\n1,3,5,7\n2,4,6,8\n"
fread(data, colClasses=c(B="character",C="character",D="character"))  # as read.csv
fread(data, colClasses=list(character=c("B","C","D")))    # saves typing
fread(data, colClasses=list(character=2:4))     # same using column numbers

也就是说,如果您的零填充列被称为big_num,请使用colClasses = list(character = 'big_num')

答案 1 :(得分:2)

解决自动检测并覆盖特定列:

# Auto detect the column types (special case of using nrows=0)
colCls <- sapply(fread(fName, nrows=0), class)
# Override the "wrong" detected column types
colCls[c("field1", "field2")] <- "character"
dt<-fread(fName, colClasses = colCls)