What about:

d$var <- c(8, 11, 3, 2)[d$fac]

Side note: it's much appreciated that you included data and a clear
problem statement. If you use
set.seed(123)
before your call to sample(), everyone who tries it will get the same
fac that you do. Otherwise we all get something different. Or just
generate your own example data and use dput() to include it in your
email.

Sarah

On Thu, Jul 17, 2014 at 11:00 AM, Gang Chen <gangch...@gmail.com> wrote:
> Suppose I have the following dataframe:
>
> L4 <- LETTERS[1:4]
> fac <- sample(L4, 10, replace = TRUE)
> (d <- data.frame(x = 1, y = 1:10, fac = fac))
>
>      x  y  fac
> 1  1  1   B
> 2  1  2   B
> 3  1  3   D
> 4  1  4   A
> 5  1  5   C
> 6  1  6   D
> 7  1  7   C
> 8  1  8   B
> 9  1  9   B
> 10 1 10   B
>
> I'd like to add another column 'var' that is defined based on the
> following mapping of column 'fac':
>
> A -> 8
> B -> 11
> C -> 3
> D -> 2
>
> How can I achieve this in an elegant way (with a generic approach for
> any length)?
>
> Thanks,
> Gang
>
-- 
Sarah Goslee
http://www.functionaldiversity.org

______________________________________________
R-help@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.

Reply via email to