R将数据帧中的变量解释为因子;事实并非如此

时间:2013-01-09 18:38:43

标签: r

我将一个csv导入R,它认为我的变量FERNH是一个因素;事实并非如此。我无法弄清楚为什么或如何解决它。我已经检查了FERNH中的值,它们看起来是正确的并且与其他8个变量一致。请指教。

str(height)
'data.frame':   512 obs. of  9 variables:
 $ DSH   : int  50 4 35 10 12 0 0 30 0 0 ...
 $ ESH   : int  0 0 0 0 0 30 80 10 8 15 ...
 $ ETH   : int  0 0 0 0 0 0 0 0 0 0 ...
 $ CANEH : int  0 0 40 15 0 0 0 0 0 0 ...
 $ HERBH : int  0 0 0 0 0 0 5 15 25 10 ...
 $ FERNH : Factor w/ 32 levels "0","10","100",..: 1 1 1 13 1 1 26 1 14 1 ...
 $ C4H   : int  0 0 0 0 0 0 0 0 0 13 ...
 $ GRASSH: int  40 0 0 0 0 0 0 0 0 0 ...
 $ DTH   : int  0 0 0 0 0 0 0 0 0 0 ...

2 个答案:

答案 0 :(得分:5)

@贾斯汀确定了这个问题。但是,您可以levelscolClasses='integer'提供read.csv,而不是尝试使用{{1}}查找违规值。然后,R会在读取期间遇到该值时引发错误并报告它是什么。

答案 1 :(得分:4)

某处有一个character值,因此R按预期运行。查看levels(height$FERNH)以查看违规值。您可以在阅读步骤或stringsAsFactors=FALSE上设置options,但该列将是character而不是integer

虽然起初看起来很烦人,但如果字符列包含长字符串,那么这是一次出色的数据质量检查以及显着的内存节省。