Creating a new column to a data frame using a formula from another variable

I want to create a new column to a data frame using a formula from another variable.
Example:
I have a data set "aa" is;

x y 2 3 4 5 6 7 

My R code is;

>bb <- "x+y-2" >attach(aa) >aa$z<- bb >detach(aa) 

the result is;

x y z 2 3 x+y-2 4 5 x+y-2 6 7 x+y-2 

but I want like this;

x y z 2 3 3 4 5 7 6 7 11 

Could you please help me..

3 Answers

If you want to evaluate an expression in the context, of a data frame, you can use with and within.

aa$z <- with(aa, x + y - 2) 

or

aa <- within(aa, z <- x + y - 2) 

Or, if your expression is in the form of a text string (you should see if there are other ways to write your code; evaluating arbitrary text strings can lead to lots of problems):

aa$z <- eval(parse(text="x + y - 2"), aa) 
1

You should probably read some basic tutorials on R other than An Introduction to R as despite what is written there the $ notation is more sensible and easier to understand than attach/detach. Try this in the meantime.

aa <- data.frame(x = c(2, 4, 6), y = c(3, 5, 7)) 

Which gives:

> aa x y 1 2 3 2 4 5 3 6 7 

Then enter:

aa$z <- (aa$x + aa$y) - 2 

Which gives:

> aa x y z 1 2 3 3 2 4 5 7 3 6 7 11 
2

you can use mutate from the package dplyr

library(dplyr) aa <- aa %>% mutate(z = x+y-2) 

Hope it helps.

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like