Federico Calboli
2006-Jul-21 09:55 UTC
[R] from character to numeric over multiple columns
Hi All, I have a data frame of three columns, all of which names. The names in the three cols overlap up to a point, so I might have *Harry* in all three columns, *Tom* in cols 1 and 3 and *Bob* in col 3 only. harry paul bob anita harry tom frank jack harry tom pete ben .... I want to turn the names into numbers, BUT I want the numeric code for, say, *Harry*, to be the same on all columns. Doing cbind(as.numeric(col1), as.numeric(col2), as.numeric(col3)) does not work because the factors are different in each column, hence they get a different number even though the name is the same. Ideas? Cheers Federico -- Federico C. F. Calboli Department of Epidemiology and Public Health Imperial College, St Mary's Campus Norfolk Place, London W2 1PG Tel +44 (0)20 7594 1602 Fax (+44) 020 7594 3193 f.calboli [.a.t] imperial.ac.uk f.calboli [.a.t] gmail.com
Prof Brian Ripley
2006-Jul-21 10:51 UTC
[R] from character to numeric over multiple columns
Are the columns factors or character? I'll try to write code that copes with both: nm <- unique(c(as.character(col1), as.character(col2), as.character(col3))) DF[] <- lapply(DF, function(x) match(x, nm)) On Fri, 21 Jul 2006, Federico Calboli wrote:> Hi All, > > I have a data frame of three columns, all of which names. The names in the three > cols overlap up to a point, so I might have *Harry* in all three columns, > *Tom* in cols 1 and 3 and *Bob* in col 3 only. > > harry paul bob > anita harry tom > frank jack harry > tom pete ben > .... > > I want to turn the names into numbers, BUT I want the numeric code for, say, > *Harry*, to be the same on all columns. > > Doing > > cbind(as.numeric(col1), as.numeric(col2), as.numeric(col3)) > > does not work because the factors are different in each column, hence they get a > different number even though the name is the same. > > Ideas? > > Cheers > > Federico > >-- Brian D. Ripley, ripley at stats.ox.ac.uk Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ University of Oxford, Tel: +44 1865 272861 (self) 1 South Parks Road, +44 1865 272866 (PA) Oxford OX1 3TG, UK Fax: +44 1865 272595