fread - 指定一个特定列的数据类型
fread - Specify data type of one specific column
我正在使用 data.table::fread
读取 csv 文件。有什么方法可以只指定一列的类型,让 fread
推断所有其他列?
背景:我有一个包含大约 60 列的 csv 文件。对于除一列以外的所有列,fread 都推断出正确的数据类型。但是有一列是带有前导零的 id 列,它应该被读取为字符但被解析为数字删除前导零。
迷你示例:
csv 文件:
id, size, weight
001, 180, 75
0001, 190, 90
002, 160, 58
想要data.table:
df = data.table(id=c("001", "0001", "002"), size=c(180, 190, 160), weight=c(75, 90, 58))
我知道我可以使用 colClasses
参数来指定列 类 的列表,但我不想这样做,因为 fread
可以正确推断除一列以外的所有列。
我不能 df[,id] <- as.character(df[,id])
,因为删除前导零会丢失信息。
正如 Roland 在评论中指出的那样,我们可以使用参数 colClasses
"with a named vector specifying types for a subset of the columns by name"。
因此,在上面的小例子中,我们可以做一些事情:
df = fread(file="path/to/my_file.csv", colClasses = c('id'='character'))
我正在使用 data.table::fread
读取 csv 文件。有什么方法可以只指定一列的类型,让 fread
推断所有其他列?
背景:我有一个包含大约 60 列的 csv 文件。对于除一列以外的所有列,fread 都推断出正确的数据类型。但是有一列是带有前导零的 id 列,它应该被读取为字符但被解析为数字删除前导零。
迷你示例:
csv 文件:
id, size, weight
001, 180, 75
0001, 190, 90
002, 160, 58
想要data.table:
df = data.table(id=c("001", "0001", "002"), size=c(180, 190, 160), weight=c(75, 90, 58))
我知道我可以使用 colClasses
参数来指定列 类 的列表,但我不想这样做,因为 fread
可以正确推断除一列以外的所有列。
我不能 df[,id] <- as.character(df[,id])
,因为删除前导零会丢失信息。
正如 Roland 在评论中指出的那样,我们可以使用参数 colClasses
"with a named vector specifying types for a subset of the columns by name"。
因此,在上面的小例子中,我们可以做一些事情:
df = fread(file="path/to/my_file.csv", colClasses = c('id'='character'))