2013-05-22 3 views
1

데이터 프레임이 있으며 요인별로 그룹화 된 숫자 변수의 합계를 제공하는 새로운 열을 만들고 싶습니다. 이 같은 뭔가 :그룹 별 변수 요약 R

전 :

data1 <- data.frame(month = c(1, 1, 2, 2, 3, 3), 
        sex = c("m", "f", "m", "f", "m", "f"), 
        value = c(10, 20, 30, 40, 50, 60)) 

AFTER : 당신은 아주 쉽게 egen 명령을 사용하여이 작업을 수행 할 수 STATA에서

data2 <- data.frame(month = c(1, 1, 2, 2, 3, 3), 
        sex = c("m", "f", "m", "f", "m", "f"), 
        value = c(10, 20, 30, 40, 50, 60), 
        sum = c(30, 30, 70, 70, 110, 110)) 

. 집계 함수 및 ddply 함수를 시도했지만 완전히 새로운 데이터 프레임을 만들고 기존 열에 열을 추가하려고합니다. 당신이 transform

을 사용하지 않으려면

+0

? 당신이 질문하는 방식에 의해 그것의 명백한. tapply 시도 –

답변

2
당신은 ave

> data2 <- transform(data1, sum=ave(value, month, FUN=sum)) 
    month sex value sum 
1  1 m 10 30 
2  1 f 20 30 
3  2 m 30 70 
4  2 f 40 70 
5  3 m 50 110 
6  3 f 60 110 

data1$sum <- ave(data1$value, data1$month, FUN=sum)를 찾고 있습니다

또한 data.table 도움이됩니다 유용 당신이 합계를 시도하고있는 무슨

library(data.table) 
DT <- data.table(data1) 
DT[, sum:=sum(value), by=month] 
+1

굉장. 정말 고마워! – aesir