[R] Mapping from one vector to another
William Dunlap
wdunlap at tibco.com
Thu Jul 17 17:13:19 CEST 2014
One way is to use a vector with names to do the mapping:
> mapVector <- c(A=8, B=11, C=3, D=2)
> mapVector[as.character(d$fac)]
B B D A C D C B B B
11 11 2 8 3 2 3 11 11 11
> # you may want to wrap this with unname()
> d$mappedFac <- mapVector[as.character(d$fac)]
> d
x y fac mappedFac
1 1 1 B 11
2 1 2 B 11
3 1 3 D 2
4 1 4 A 8
5 1 5 C 3
6 1 6 D 2
7 1 7 C 3
8 1 8 B 11
9 1 9 B 11
10 1 10 B 11
Bill Dunlap
TIBCO Software
wdunlap tibco.com
On Thu, Jul 17, 2014 at 8: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
>
> ______________________________________________
> 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