On 2/19/2006 7:53 PM, Paul Johnson wrote: > On 2/19/06, Robert W. Baer, Ph.D. <[EMAIL PROTECTED]> wrote: >> Quoted directly from the FAQ (although granted I need to look this up over >> and over, myself. Would that it had a easily remembered wrapper function): >> 7.10 How do I convert factors to numeric? >> It may happen that when reading numeric data into R (usually, when reading >> in a file), they come in as factors. If f is such a factor object, you can >> use >> >> as.numeric(as.character(f)) >> to get the numbers back. More efficient, but harder to remember, is >> >> as.numeric(levels(f))[as.integer(f)] > > I don't think I have that problem described in the FAQ. I've had that > before, though. > > Observe. Here's the original thing: > >> eldatfac$HAPPY[1:10] > [1] Happy Happy Very happy Happy Very happy Very happy > [7] Happy Very happy Happy Very happy > 6 Levels: Not happy at all Not very happy Happy Very happy ... Refused > > Here's the result of the first thing you cite from the FAQ > >> as.numeric(as.character(eldatfac$HAPPY))[1:10] > [1] NA NA NA NA NA NA NA NA NA NA > Warning message: > NAs introduced by coercion > > Here's the second thing from the FAQ > >> as.numeric(levels(eldatfac$HAPPY))[as.integer(eldatfac$HAPPY)] > [1] NA NA NA NA NA NA NA NA NA NA > Warning message: > NAs introduced by coercion > > What am I missing here?
You're right, you have a different problem. The FAQ is talking about the situation where the data in a file is numeric but is read as a factor, perhaps because of typos in one or two values. In your case, levels(eldatfac$HAPPY) will tell you the correspondence between R's internal numbers and labels. It's not the same as SPSS uses; as far as I know that coding is lost at this point. You'll need to work out the coding you want to use and do it yourself. For example, if the 1st 4 codes should be 0:3 and the others NA, you could use encoding <- c(0:3, NA, NA) encoding[as.integer(eldatfac$HAPPY)] Duncan Murdoch ______________________________________________ [email protected] mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
