2013-09-25 2 views
15

다른 변수의 수식을 사용하여 데이터 프레임에 새 열을 만들고 싶습니다.
예 :
데이터 세트 "aa"가 있습니다.다른 변수의 수식을 사용하여 데이터 프레임에 새 열 만들기

x y 
2 3 
4 5 
6 7 

내 R 코드는;

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

결과는 다음과 같습니다.

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

하지만 이렇게하고 싶습니다.

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

당신이 좀 도와 주 시겠어요 ..

답변

22

당신이 컨텍스트에서 식을 평가하려는 경우의 데이터 프레임,을 사용할 수 있습니다.3210 및 within.

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

또는

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

또는 표현식은 텍스트 문자열의 형태 인 경우 코드를 작성하는 다른 방법이있는 경우 (당신이 볼 수, 임의의 텍스트 문자열을 평가하는 것은 많은으로 이어질 수 있습니다) 문제 :

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

정말 고마워요. aa $ z <- eval (parse (text = "x + y - 2"), aa)이 코드는 제대로 작동했습니다. 여기서 우리는 수식을 포함하는 변수 이름을 줄 수 있습니다. – Punith

6

당신은 아마 An Introduction to R보다 다른을 R에 대한 몇 가지 기본적인 튜토리얼을 읽어야가 기록되는 것을에도 불구하고 같은 $ 표기는 attach/detach보다 이해하기 분별하고 쉽게 . 그 동안 시도하십시오.

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

주는 :

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

다음을 입력합니다

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

주는 :

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

예, 알고 있습니다. 그러나 다른 변수에서 수식을 가져 오지 않습니다. – Punith

+0

아, 죄송합니다, 내 부분에 대한 오해 - 다른 답변에 따르면'eval'은 실제로 당신이 원하는 것입니다. – SlowLearner

+0

사과하지 마십시오. 당신은 나에게 제안을하고 있습니다 ... 응답 주셔서 감사합니다 ... – Punith

3

당신은

dplyr 패키지 에서 mutate을 사용할 수 있습니다
library(dplyr) 
aa <- aa %>% mutate(z = x+y-2) 

희망이 있습니다.

관련 문제