我尝试将data.table
用于csv
- 带有因子列的文件,并面临无法解释的行为。以下是示例代码:
> df <- read.csv('avgpm25.csv', colClasses = c('numeric', 'character', 'factor', 'numeric', 'numeric'))
> dt <- fread('avgpm25.csv', colClasses = c('numeric', 'character', 'factor', 'numeric', 'numeric'))
> summary(dt$region)
Length Class Mode
576 character character
> summary(df$region)
east west
442 134
因此,可以看出data.table
无法读取因子列,但数据帧可以。这种行为的原因是什么?使用data.table
处理因子列的正确方法是什么?
更新: 有列的列表
> colnames(df)
[1] "pm25" "fips" "region" "longitude" "latitude"
当我尝试stringsAsFactors = TRUE
时,我有字符列&#34; fips&#34;也成了因素。同时数据框保留原始类型。
> dt2 <- fread('avgpm25.csv', colClasses = c('numeric', 'character', 'factor', 'numeric', 'numeric'), stringsAsFactors = T)
> summary(dt)
pm25 fips region longitude latitude
<skipped> Length:576 Length:576 <skipped>
Class :character Class :character
Mode :character Mode :character
> summary(dt2)
pm25 fips region longitude latitude
<skipped> 01003 : 1 east:442 <skipped>
01027 : 1 west:134
01033 : 1
01049 : 1
01055 : 1
01069 : 1
(Other):570
> summary(df)
pm25 fips region longitude latitude
<skipped> Length:576 east:442 <skipped>
Class :character west:134
Mode :character