[R] Changing some values within a variable
Peter Alspach
Peter.Alspach at plantandfood.co.nz
Fri Jul 23 02:00:44 CEST 2010
Tena koe Toni
Assume your data is in a data.frame called toniData (naming a data.frame data is not a good idea as data is a function in R - see ?data), and that Group is of class character (try str(toniData)) then:
toniData[toniData$Group %in% 'A','Group'] <- 'C'
will work. But from your message below I suspect Group is of class factor. So you either need to change its class:
toniData$Group <- as.character(toniData$Group)
or rename the level names. For example:
set.seed(0)
toniG <- factor(LETTERS[sample(1:2, size=10, replace=TRUE)])
toniG
[1] B A A B B A B B B B
Levels: A B
levels(toniG)
[1] "A" "B"
levels(toniG) <- c('C','B')
toniG
[1] B C C B B C B B B B
Levels: C B
Regarding your second question, see sub() (or gsub()) - again paying attention to whether or not you are dealing with factor or character variables.
HTH ....
Peter Alspach
> -----Original Message-----
> From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-
> project.org] On Behalf Of Toni Pitcher
> Sent: Friday, 23 July 2010 9:44 a.m.
> To: r-help at r-project.org
> Subject: [R] Changing some values within a variable
>
> Hi
>
> I'm new to R and would like some help with a couple of problems. I
> suspect the solutions are quite simple.
>
> I have a data.frame (data) with 40 variables and 5238 observations
> created from ~150 text files using read.table.
>
> I would like to change some of the entries within two different
> columns.
>
> Firstly, in the Group column I have groups A and B, I would like to
> select all As and change to C. I have tried the following;
>
> data$Group = ifelse(data$Group == 'A', "C", data$Group)
> data$Group <- as.factor(data$Group)
>
> This works to some extent, all As have been changes to Cs, but the Bs
> have also been changed, in this case to "2", instead of remaining as
> their original values. How do I get the Bs to stay the same?
>
>
> Second problems is similar;
>
> I need to change some of the Subject IDs. The required format is 3
> numbers followed by 3 letters (999LLL). Some of the IDs have format
> 999LLL-LL, Thus I need to delete the -LL from the IDs.
> How do I generically specify "find 999LLL-LL and replace with 999LLL"?
>
>
> Many thanks in advance
>
> Toni
>
>
>
>
> --
> Toni Pitcher PhD
> Dept. of Medicine
> University of Otago, Christchurch
>
> Van der Veer Institute for Parkinson's and Brain Research
> 66 Stewart St
> Christchurch 8011
> New Zealand
>
> Phone: +64 3 378 6075 (internal extn 86075)
> Email: toni.pitcher at otago.ac.nz
>
> ______________________________________________
> R-help at 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.
More information about the R-help
mailing list