Francesco Sarracino
2013-Jan-23 09:33 UTC
[R] problems with coercing a factor to be numeric
Dear R listers, I am trying to compute the mean of a dummy variable that is encoded as a factor. However, even though the levels of my factor are 0 - 1, when I compute the mean (after coercing the factor to be numeric), R changes 0 into 1 and 1 into yes, thus altering my expected result. Please, consider the following working example: pp <- rep(0:1, 10) pp <- factor(pp, levels=(0:1), labels=c("no","yes")) mean(pp) #this won't work because the argument is not numeric or logical mean(as.integer(pp)) # this computes the average, but not on the range 0-1, but 1-2. Indeed, the result is 1.5 and not 0.5 as expected. What am I doing wrong? Thanks in advance for your kind support, f. -- Francesco Sarracino, Ph.D. https://sites.google.com/site/fsarracino/ [[alternative HTML version deleted]]
Check R FAQ 7.10: How do I convert factors to numeric? I hope it helps. Best, Dimitris On 1/23/2013 10:33 AM, Francesco Sarracino wrote:> Dear R listers, > > I am trying to compute the mean of a dummy variable that is encoded as a > factor. However, even though the levels of my factor are 0 - 1, when I > compute the mean (after coercing the factor to be > numeric), R changes 0 into 1 and 1 into yes, thus altering my expected > result. > > Please, consider the following working example: > pp <- rep(0:1, 10) > pp <- factor(pp, levels=(0:1), labels=c("no","yes")) > mean(pp) #this won't work because the argument is not numeric or logical > mean(as.integer(pp)) # this computes the average, but not on the range 0-1, > but 1-2. Indeed, the result is 1.5 and not 0.5 as expected. > > What am I doing wrong? > Thanks in advance for your kind support, > f. > >-- Dimitris Rizopoulos Assistant Professor Department of Biostatistics Erasmus University Medical Center Address: PO Box 2040, 3000 CA Rotterdam, the Netherlands Tel: +31/(0)10/7043478 Fax: +31/(0)10/7043014 Web: http://www.erasmusmc.nl/biostatistiek/