Как читать числовые значения как факторы в R?
У меня есть фрейм данных A, который имеет числовой столбец, такой как:
zip code
00601
00602
00607
И так далее.
Если я прочитаю это в R, используя read.csv, они читаются как числовые сущности. Я хочу, чтобы они были факторами.
Я попытался преобразовать их обратно в фактор, используя
A <- as.factor(A)
Но это удаляет начальные нули и делает подобное
zip code
601
602
607
Я этого не хочу. Я хочу сохранить нули.
3 ответа:
Используйте
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
как a .csv-файлwrite.csv(A, "tmp.csv")
Приводит к
"","zip.code" "1","00601" "2","00602" "3","00607"
Все без какого-либо текстового квалификатора (попытано быть) прочитано как числовое, поэтому проблема в основном заключается в том, чтобы знать, как ваши данные (в случае
00607
) хранятся в плоском текстовом файле. Если без текстового классификатора, вы можете либо следовать предложению @Hong Ooi, либо использоватьread.csv(*, colClasses="character")
, а затем преобразовать каждый столбец соответственно (в случае, если вы не хотите/нуждаетесь во всех из них в
factor
). После того, как у вас есть вектор символов (данные.frame column) преобразование его в фактор просто прямо> zipCode <- c("00601", "00602", "00607") > factor(zipCode) [1] 00601 00602 00607 Levels: 00601 00602 00607