为什么 R 中的 read.csv 将字段转换为某些文件的因子,而不是其他文件?
Why does read.csv in R convert fields to factors for some files, and not in others?
我有几个站点的天气数据表。当我使用 read.csv 分别导入它们时,字段是因子、整数和数字。但是,当我尝试导入一个包含所有数据的 csv 文件时,数据框中的结果字段都是因素。在组合文件中,第一个字段有几个字母数字变量,而在单个文件中只有一个变量(站名)。
这是 base
R 中 data.frame()
的常见行为。大多数情况下,read.csv()
的结果将存储在 data.frame
中。正如@Duck 在评论部分中建议的那样,您可以通过将 stringsAsFactors
参数设置为 FALSE 来避免这种行为。
read.csv('myfile.csv', stringsAsFactors = FALSE)
您可以在 data.frame
函数的文档页面上查看下面的描述。您可以使用 ?data.frame
命令访问此文档。
Character variables passed to data.frame are converted to factor columns unless protected by I()
or argument stringsAsFactors
is false.
所以在你的例子中,这发生在你的组合文件中,因为 R 将所有变量解释为字符。为什么?可能是因为在您的一个(或某些)文件中,在数字和整数列中,某些数据行的格式不正确。例如,也许在一行中,您有一个“x”来表示缺失值。 read.csv()
使用整个文件来决定每列的数据格式,因此一旦函数达到此“x”值,它就会将整个列解释为字符。当此数据传递给 data.frame()
时,该函数会将这些字符转换为因子。您很遗憾,在组合文件中,您在第一个字段中有一些字母数字值。因此,这些值可能是产生问题的“x”。
我有几个站点的天气数据表。当我使用 read.csv 分别导入它们时,字段是因子、整数和数字。但是,当我尝试导入一个包含所有数据的 csv 文件时,数据框中的结果字段都是因素。在组合文件中,第一个字段有几个字母数字变量,而在单个文件中只有一个变量(站名)。
这是 base
R 中 data.frame()
的常见行为。大多数情况下,read.csv()
的结果将存储在 data.frame
中。正如@Duck 在评论部分中建议的那样,您可以通过将 stringsAsFactors
参数设置为 FALSE 来避免这种行为。
read.csv('myfile.csv', stringsAsFactors = FALSE)
您可以在 data.frame
函数的文档页面上查看下面的描述。您可以使用 ?data.frame
命令访问此文档。
Character variables passed to data.frame are converted to factor columns unless protected by
I()
or argumentstringsAsFactors
is false.
所以在你的例子中,这发生在你的组合文件中,因为 R 将所有变量解释为字符。为什么?可能是因为在您的一个(或某些)文件中,在数字和整数列中,某些数据行的格式不正确。例如,也许在一行中,您有一个“x”来表示缺失值。 read.csv()
使用整个文件来决定每列的数据格式,因此一旦函数达到此“x”值,它就会将整个列解释为字符。当此数据传递给 data.frame()
时,该函数会将这些字符转换为因子。您很遗憾,在组合文件中,您在第一个字段中有一些字母数字值。因此,这些值可能是产生问题的“x”。