Skip to content

replace multiple values in vector at once

7 messages · David Winsemius, Trevor Davies, arun +2 more

#
On Jul 12, 2013, at 2:56 PM, Trevor Davies wrote:

            
That fairly tortured compared with:

x <- c(rep('x',3),rep('y',3),rep('z',3))

x1b <- as.character(1:3)[ match(x, c("x","y","z") ) ]
x1b

Furthermore, your solution does not deliver the answer you expected.
#
Hi,
library(car)
?recode(x,"'x'=1;'y'=2;'z'=3")
#[1] 1 1 1 2 2 2 3 3 3
#or
as.numeric(factor(x))
#[1] 1 1 1 2 2 2 3 3 3
A.K.




----- Original Message -----
From: Trevor Davies <davies.trevor at gmail.com>
To: "r-help at r-project.org" <r-help at r-project.org>
Cc: 
Sent: Friday, July 12, 2013 5:56 PM
Subject: Re: [R] replace multiple values in vector at once

I always think that replying to your own r-help feels silly but it's good
to close these things out.

here's my hack solution:

x1<-merge(data.frame(A=x),data.frame(A=c('x','y','z'),B=c(1,2,2)),by='A')[,2]

Well that works and should for my more complex situation.? If anyone has
something a little less heavy handed I'd live to hear it.

Have a great weekend.
On Fri, Jul 12, 2013 at 2:18 PM, Trevor Davies <davies.trevor at gmail.com>wrote:

            
??? [[alternative HTML version deleted]]

______________________________________________
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.
#
David is right, but it's trivial if x is a factor (which is the
default when you create character columns in a data frame).

(Note also how to use rep() properly -- read the docs: ?rep)

x <- factor(rep(LETTERS[1:3],e=3))
x
[1] A A A B B B C C C
Levels: A B C

levels(x) <- 1:3
x
[1] 1 1 1 2 2 2 3 3 3
Levels: 1 2 3

Cheers,
Bert
On Fri, Jul 12, 2013 at 3:05 PM, David Winsemius <dwinsemius at comcast.net> wrote:

  
    
#
In the plyr package there are also the functions revalue and mapvalues:

library(plyr)
x <- c("a", "b", "c")
revalue(x, c(a = "A", c = "C"))
mapvalues(x, c("a", "c"), c("A", "C"))

mapvalues works on numeric, character and factor.

Jason

-----Original Message-----
From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org] On Behalf Of Trevor Davies
Sent: Friday, July 12, 2013 2:57 PM
To: r-help at r-project.org
Subject: Re: [R] replace multiple values in vector at once

I always think that replying to your own r-help feels silly but it's good to close these things out.

here's my hack solution:

x1<-merge(data.frame(A=x),data.frame(A=c('x','y','z'),B=c(1,2,2)),by='A')[,2]

Well that works and should for my more complex situation.  If anyone has something a little less heavy handed I'd live to hear it.

Have a great weekend.
On Fri, Jul 12, 2013 at 2:18 PM, Trevor Davies <davies.trevor at gmail.com>wrote:

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