为什么R中的read.csv会将字段转换为某些文件的因子,而不是其他文件的因子?

问题描述

我有几个气象站的天气数据表。当我使用read.csv分别导入它们时,这些字段是因子,整数和数字。但是,当我尝试导入一个结合了所有数据的csv文件时,数据框中的结果字段是所有因素。在合并的文件中,第一个字段具有多个字母数字变量,而在单个文件中,只有一个变量(站名)。

解决方法

这是data.frame() R中base的一种常见行为。在大多数情况下,read.csv()的结果将存储在data.frame中。正如@Duck在评论部分中建议的那样,您可以通过将stringsAsFactors参数设置为FALSE来避免这种行为。

read.csv('myfile.csv',stringsAsFactors = FALSE)

您可以在下面的data.frame函数的文档页面上查看此说明。您可以使用?data.frame命令访问此文档。

传递给data.frame的字符变量将转换为因子列,除非受I()保护或参数stringsAsFactors为假。

因此,在您的情况下,这会在您的组合文件中发生,因为R会将所有变量解释为字符。为什么?可能是因为在一个(或某些)文件的“数字”和“整数”列中,某些数据行格式不正确。例如,也许连续有一个“ x”代表缺失值。 read.csv()使用整个文件来确定每一列的数据的格式,因此一旦函数达到该“ x”值,它将把整个列解释为字符。当此数据传递到data.frame()时,函数会将这些字符转换为因数。您感到遗憾的是,在合并的文件中,第一个字段中包含一些字母数字值。因此,这些值可能是导致问题产生的“ x”值。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...