2014-05-08 5 views
0

데이터 프레임에서 서로 다른 두 그룹을 기반으로 평균값을 계산하고 싶습니다. 예 데이터 집합은 다음과 같습니다 데이터 프레임의 서로 다른 두 그룹을 기준으로 평균값을 계산하십시오.

> data 
    age Year Length 
[1,] 3 2004 23.2 
[2,] 3 2004 27.6 
[3,] 3 2005 25.4 
[4,] 3 2005 22.2 
[5,] 4 2004 37.6 
[6,] 4 2004 31.3 
[7,] 4 2005 29.9 
[8,] 4 2005 30.1 

지금까지, 나는 1 개 개의 연령 그룹 내에서 수단을 계산하기 위해 ddply 기능을 사용하고 있습니다. 이렇게하기 위해 3 년 된 모든 데이터를 정렬하기 위해 인덱스를 작성한 다음 Year 내 길이의 길이를 발견했습니다.

logical3=(mydata$Age ==3) 
mydata3= mydata[logical3,] 
mean_values_3 <- ddply(mydata3, "Year", transform, grp.mean.values=mean(Length)) 
내가 먼저 연령별로 분류하지 않고 프로세스를 빠르고 덜 투박한 수단을 계산하여하고 싶습니다

.

1 개 이상의 그룹을 기준으로 평균값을 찾습니다.이 그룹은 순차적으로 수행 할 필요가 없습니다. 2) 별도의 데이터 프레임으로 출력하고 추가하지 않을 수있는 방법은 무엇입니까? 일하는 사람에게.

+3

'집계'의 수식 메소드를 사용해보세요. '? aggregate'를 참조하십시오. 당신의 경우에는'result' <- aggregate (Length ~ age + year, data = data, FUN = mean)'또는 뭔가 가깝습니다. –

답변

3

aggregate 기능을 사용하려고합니다. 아마도 이런 식으로 :

example_data <- data.frame(age=c(3,3,3,3,4,4,4,4), 
          Year=c(2004,2004,2005,2005,2004,2004,2005,2005), 
          Length=c(23.2,27.6,25.4,22.2,37.6,31.3,29.9,30.1)) 

aggregate(x=example_data$Length, 
      by=list(example_data$age,example_data$Year), 
      FUN=mean) 

    Group.1 Group.2  x 
1  3 2004 25.40 
2  4 2004 34.45 
3  3 2005 23.80 
4  4 2005 30.00 
+3

또는'example_data'를 호출하지 않고'$ '를 여러 번 사용하지 않으려면'aggregate (Length ~ age + Year, FUN = mean, data = example_data)'라고'aggregate'라고 쓸 수 있습니다. –

0

plyr 패키지를 사용하십시오. 간단한 코드로 데이터를 요약 할 수 있습니다. c ("Year", "age")는 그룹 변수를 지정하는 방법입니다. 이 패키지에는 많은 요약 통계 함수를 포함 할 수도 있습니다. 이 코드는 그룹화 변수의 열과 그룹의 수단으로 별도의 데이터 프레임을 반환합니다. 정렬이 필요하지 않습니다.

group.means<-ddply(data,c("Year","age"),summarise,mean=mean(Length)) 
group.means 
관련 문제