[R] replacing a factor value in a data frame

Prof Brian Ripley ripley at stats.ox.ac.uk
Fri Oct 28 17:39:25 CEST 2005


On Fri, 28 Oct 2005, Federico Calboli wrote:

> Hi All,
>
> I have the following problem, that's driving me mad.
>
> I have a dataframe of factors, from a genetic scan of SNPs. I DO have
> NAs in the dataframe, which would look like:
>
>   V4 V5 V6 V7   V8   V9 V10
> 1  TT GG TT AC   AG   AG  TT
> 2  AT CC TT AA   AA   AA  TT
> 3  AT CC TT AC   AA <NA>  TT
> 4  TT CC TT AA   AA   AA  TT
> 5  AT CG TT CC   AA   AA  TT
> 6  TT CC TT AA   AA   AA  TT
> 7  AT CC TT CC <NA> <NA>  TT
> 8  TT CC TT AC   AG   AG  TT
> 9  AT CC TT CC   AG <NA>  TT
> 10 TT CC TT CC   GG   GG  TT
>
>
> In the dataframe I have 1 column where one factor has been erroneosly
> given alternative readings: CG and GC.
>
> I want to change the instances of GC to CG and I use the code:
>
> data[data[,30]=="GC", 30] = "CG"
>
> but get the error:
> Error in "[<-.data.frame"(`*tmp*`, all[, 30] == "GC", 30
>        missing values are not allowed in subscripted as
>
> Any hints?

1) Use %in% not ==

2) (Better) As this is a factor, use levels<- to merge the levels.  See 
?levels.

-- 
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




More information about the R-help mailing list