[R] Assigning entries to categories

Charles C. Berry cberry at tajo.ucsd.edu
Thu Jul 1 18:51:18 CEST 2010


On Thu, 1 Jul 2010, LogLord wrote:

>
> As requested, here is some example data:
> a=c("x","y","z")
> b=c(1,5,8)
> c=c(200010,535388,19929)
> data=data.frame(a,b,c)
>
> d=c("cat1","cat2","cat3")
> b1=c(1,5,8)
> c_start=c(200000,500000,600000)
> c_stop=c(201000,550000,700000)
> category=data.frame(d,b1,c_start,c_stop)
>
> I want to add a variable into data, which assigns in this case to "x"
> "cat1", "y" "cat2" and leaves "z" unassigned. So first it should test if b =
> b1 for each row and if this is true it should test if c  >= c_start and <=
> c_stop. If this is all true the value of d should be transfered into the new
> variable.

Like this?

> data$new.var <- category$d
> is.na( data$new.var ) <- with(data, b != category$b1 | c < category$c_start | c> category$c_stop )
> data
   a b      c new.var
1 x 1 200010    cat1
2 y 5 535388    cat2
3 z 8  19929    <NA>
>

You may want to read up on

 	?match
and
 	?merge

in case the rows of data and those of category are not in 
one-to-one correspondence.


Charles C. Berry                            (858) 534-2098
                                             Dept of Family/Preventive Medicine
E mailto:cberry at tajo.ucsd.edu	            UC San Diego
http://famprevmed.ucsd.edu/faculty/cberry/  La Jolla, San Diego 92093-0901



More information about the R-help mailing list