我有一个数据框A,其数字列如下:
zip code
00601
00602
00607
等等。
如果我使用read.csv在R中读取它,它们将被读作数字实体。我希望它们成为因素。
我尝试使用
将它们转换回因子A <- as.factor(A)
但是这会删除起始零并使A像
zip code
601
602
607
我不想要这个。我想保存零。
答案 0 :(得分:4)
在colClasses
来电中使用read.csv
将其作为字符或因素阅读:read.csv(*, colClasses="factor")
。
答案 1 :(得分:1)
您可能需要添加前导零 - 如this post中所示。这首先转换为字符类。然后,您可以将其更改为保持前导零的因子。
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"
答案 2 :(得分:0)
没有任何文本限定符的所有内容都是(尝试)读取为数字,因此问题基本上是知道您的数据(如果00607
)存储在平面文本文件中的方式。如果没有文本限定符,您可以按照@Hong Ooi的建议或使用
read.csv(*, colClasses="character")
然后相应地转换每个列(如果您不想要/需要所有列到factor
)。一旦你有了一个字符向量(data.frame列),将它转换为factor只是简单的
> zipCode <- c("00601", "00602", "00607")
> factor(zipCode)
[1] 00601 00602 00607
Levels: 00601 00602 00607