On Jan 1, 2011, at 12:41 AM, H. T. Reynolds wrote:
Hello (and Happy New Year),
When I create a factor with labels in the order I want, write the
data as a text file,
Why? What is the reason for this process.
and then retrieve them, the factor levels are no longer in the
proper order.
Two further ideas to those offered by Turlach and Bolker:
You can name them with leading digits that ascend in the desired order
or
I have seen described ( but not found a fully worked example despite
what I thought was an adequate search) the use of an as() method
which in this instance might apply as.factor with your own level
specification while reading with colClasses.
Here is what I do (I tried many variations):
# educ is a numeric vector with 1,001 observations.
# There is one NA
# Use educ to create a factor
feducord <- factor(educ, labels = c('Elem', 'Mid', 'HS',
+ 'Bus', 'Some', 'Col', 'Post'), ordered = T)
levels(feducord)
[1] "Elem" "Mid" "HS" "Bus" "Some" "Col" "Post"
table(feducord)
feducord
Elem Mid HS Bus Some Col Post
30 90 303 108 236 144 89
# The above is what I want. The frequencies agree with
# the codebook
# Make a data frame and save it. (I want a text file.)
testdf <- data.frame(feducord)
str(testdf)
'data.frame': 1001 obs. of 1 variable:
$ feducord: Ord.factor w/ 7 levels "Elem"<"Mid"<"HS"<..:
5 6 5 7 3 4 3 3 3 5 ...
write.table(testdf, file = 'Junkarea/test.txt')
# So far, so good.
rm(testdf, feducord)
# Go away.
# Come back later to retrieve the data.
testdf <- read.table(file = 'Junkarea/test.txt')
# But levels are no longer ordered
str(testdf)
'data.frame': 1001 obs. of 1 variable:
$ feducord: Factor w/ 7 levels "Bus","Col","Elem",..:
7 2 7 6 4 1 4 4 4 7
table(testdf$feducord)
Bus Col Elem HS Mid Post Some
108 144 30 303 90 89 236
# The frequencies are correct, but the ordering is wrong.
Clearly I am missing something obvious, but I can't see it. If I
save "feducord" and load it, the order of the levels is as it should
be. But I don't know why writing to a test file should change
anything. Any help would be greatly appreciated.
(You're right, I don't have anything better to do on New Year's eve.)
______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
David Winsemius, MD
Heritage Laboratories
West Hartford, CT
______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.