[R] Mapping from one vector to another
Sarah Goslee
sarah.goslee at gmail.com
Thu Jul 17 17:15:49 CEST 2014
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 <gangchen6 at 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
More information about the R-help
mailing list