4

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

zip code
00601
00602
00607

等等。

如果我使用 read.csv 在 R 中读取此内容,它们将被读取为数字实体。我希望它们作为因素。

我尝试使用将它们转换回因子

A <- as.factor(A)

但这会删除起始零并使 A 喜欢

zip code
601
602
607

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

4

3 回答 3

4

colClasses在您的通话中使用以read.csv将它们作为字符或因素读入:read.csv(*, colClasses="factor").

于 2013-06-28T08:55:53.973 回答
1

您可能需要添加前导零 - 就像在这篇文章中一样。这首先转换为字符类。然后,您可以将其更改为保持前导零的因子。

例子

A <- data.frame("zip code"=c(00601,00602,00607))
class(A$zip.code) #numeric
A$zip.code <- sprintf("%05d", A$zip.code)
class(A$zip.code) #character
A$zip.code <- as.factor(A$zip.code)
class(A$zip.code) #factor

导致:

> A$zip.code
[1] 00601 00602 00607
Levels: 00601 00602 00607

写入A为 .csv 文件

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

结果是

"","zip.code"
"1","00601"
"2","00602"
"3","00607"
于 2013-06-28T09:05:50.640 回答
0

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

read.csv(*, colClasses="character")

然后相应地转换每一列(以防你不想要/需要所有这些factor)。一旦有了字符向量(data.frame 列),将其转换为因子就很简单了

> zipCode <- c("00601", "00602", "00607")
> factor(zipCode)
[1] 00601 00602 00607
Levels: 00601 00602 00607
于 2013-06-28T09:31:08.683 回答