我有一个数据框 A ,它具有如下数字列:
zip code
00601
00602
00607
等等。
如果我使用 read.csv 在 R 中读取此内容,它们将被读取为数字实体。我希望它们作为因素。
我尝试使用将它们转换回因子
A <- as.factor(A)
但这会删除起始零并使 A 喜欢
zip code
601
602
607
我不想要这个。我想保存零。
colClasses
在您的通话中使用以read.csv
将它们作为字符或因素读入:read.csv(*, colClasses="factor")
.
您可能需要添加前导零 - 就像在这篇文章中一样。这首先转换为字符类。然后,您可以将其更改为保持前导零的因子。
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"
没有任何文本限定符的所有内容都(试图)被读取为数字,所以问题基本上是要知道你的数据(以防万一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