微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决为什么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”值。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。