如何将数值作为R中的因子读取?

如何将数值作为R中的因子读取?,r,csv,r-factor,R,Csv,R Factor,我有一个数据框a,它有如下数字列: zip code 00601 00602 00607 等等 如果我在R中使用read.csv读取此文件,它们将作为数字实体读取。我想把它们作为因素 我试着使用 A <- as.factor(A) 我不要这个。我想保存零。在read.csv调用中使用colClasses将它们作为字符或因子读入:read.csv(*,colClasses=“factor”)您可能需要添加前导零-如中所示。这将首先转换为字符类。然后,您可以将其更改为一个保持前导零的因子

我有一个数据框a,它有如下数字列:

zip code
00601
00602
00607
等等

如果我在R中使用read.csv读取此文件,它们将作为数字实体读取。我想把它们作为因素

我试着使用

A <- as.factor(A)

我不要这个。我想保存零。

read.csv
调用中使用
colClasses
将它们作为字符或因子读入:
read.csv(*,colClasses=“factor”)
您可能需要添加前导零-如中所示。这将首先转换为字符类。然后,您可以将其更改为一个保持前导零的因子

例子 将
A
写入.csv文件

write.csv(A, "tmp.csv")
导致

"","zip.code"
"1","00601"
"2","00602"
"3","00607"

没有任何文本限定符的所有内容都被(试图)读取为数字,因此问题基本上是要知道您的数据(如果
00607
)是如何存储在平面文本文件中的。如果没有文本限定符,您可以按照@Hong Ooi的建议或使用

read.csv(*, colClasses="character")
然后相应地转换每一列(如果您不想/不需要将所有列都转换为
因子
)。一旦有了一个字符向量(data.frame列),将其转换为因子就很简单了

> zipCode <- c("00601", "00602", "00607")
> factor(zipCode)
[1] 00601 00602 00607
Levels: 00601 00602 00607
zipCode因子(zipCode) [1] 00601 00602 00607 级别:00601 00602 00607
你确定它们是数字吗?@Thomas如果作为
00607
存储在
R
中,它们肯定不是。这很奇怪,因为OP说
它们都是数字的
,而且
我有一个数据框a,它有一个数字列,如:邮政编码00601…
Hi Marc,谢谢你提供另一个解决方案。我开始了解很多函数。有一个疑问,如果我使用write.csv()编写此数据帧,zip.code将被视为数字向量(无论zip在R控制台中是因子还是字符,它都会在开始时自动删除零)。我如何按原样编写它(表示开始时有零)?@AyushRajSingh-在我的例子中,当我编写.csv文件时,
zip.code
被视为文本。我在答案中添加了我的输出。我尝试了你的相同示例,但当我编写它时,零消失了。有什么问题吗?“编写”:我的意思是,当我使用write.csv()在Excel中打开它时。好的,这是Excel的问题。在Excel中,邮政编码实际上有一种格式:高亮显示列>格式单元格>特殊>邮政编码。非常感谢你。
"","zip.code"
"1","00601"
"2","00602"
"3","00607"
read.csv(*, colClasses="character")
> zipCode <- c("00601", "00602", "00607")
> factor(zipCode)
[1] 00601 00602 00607
Levels: 00601 00602 00607