2012-03-10 3 views
5

죄송합니다. 이미 비슷한 질문을 받았지만 찾을 수 없을 것 같습니다. 데이터 프레임 내에서 많은 변수를 합치기 만하면됩니다. 작은 예제로서, 내가하고 싶은 것은 아래와 같이 df $ e를 계산하는 것이다.R 데이터 프레임 내의 합계 변수

df <- data.frame(a=c(1,2,3,4,5), b=(c(6,7,8,9,10)), 
       c=c(1,2,3,4,5), d=(c(6,7,8,9,10))) 

df$e <- with(df, a+b+c+d) # this is the right answer 

하지만 안양 $ 전자 < 말로 그것을 표현하고자하는 - ". A와 D 사이의 모든 변수의 합을"

감사합니다. 태깅에서 도움을 주셨습니다.

답변 : df$e <- rowSums(subset(df, select=a:d))

내가 아주 명확하게 필요하다고 표현하지 않았다,하지만 난 rowSums이었다 나는이 subset의 무식한했다.

+0

'addmargins'와'margin.table' 편리하게 올 수있는 방법을

그렇다면,. –

답변

10

rowSums()을 찾고 계십니까? 당신은 물론 또한 df에 다시 할당 할 수 있습니다

> df <- data.frame(a=c(1,2,3,4,5), b=(c(6,7,8,9,10)), 
+     c=c(1,2,3,4,5), d=(c(6,7,8,9,10))) 
> with(df, a+b+c+d) 
[1] 14 18 22 26 30 
> rowSums(df) 
[1] 14 18 22 26 30 
> 

:

> df$e <- rowSums(df) 
> df 
    a b c d e 
1 1 6 1 6 14 
2 2 7 2 7 18 
3 3 8 3 8 22 
4 4 9 4 9 26 
5 5 10 5 10 30 
> 
+0

는 다음과 같이 보입니다 :)하지만 전체 데이터 프레임보다는 첫 번째 및 마지막 연속 열 이름을 참조해야합니다. 내가 어떻게 그럴 수 있니? –

+0

그에 따라'rowSums'에 인수를 지정하십시오. –

+0

죄송합니다. 정확히 어떻게해야하는지 묻습니다. 계속 찾아보고이 페이지로 돌아 오기 전에 답을 찾을 수 있는지 살펴 보겠습니다. –

2

당신은 명시 적으로 a + b + c + d + ...을 쓸 수있는 방법을 찾고 계십니까? 당신이 매트릭스/테이블, 작업 할 수있는 경우에 대한 rowSums()

df$e <- with(df, rowSums(df)) 
+0

감사합니다 ... Dirk에 대한 동일한 의견입니다. 그렇지만 전체 데이터 프레임이 아닌 처음과 마지막 연속 열 이름을 참조해야합니다. 내가 어떻게 그럴 수 있니? –