2014-01-16 3 views
2

나는 자동차 판매 데이터 세트를 보유하고 있으며 다음과 같이 다른 그룹에 데이터를 서브 세트 화합니다.데이터 그룹 하위 집합에 tapply 사용

자동차 브랜드 및 판매 연도.

toyota=subset(car, brand=="Toyota") 
toyota.yr = cut(toyota$date, "year") 
honda=subset(car, brand=="Honda") 
honda.yr = cut(honda$date, "year") 

그래서 지금은 자동차 브랜드 (6) 하위 그룹을 한 후 나는 올해 각 브랜드의 판매의 평균을 얻기 위해 tapply 사용

tapply(toyota$price, toyota.yr, mean, na.rm=TRUE) 

내가 좋아하는 것 6 개의 하위 그룹 모두에게이 작업을 수행하려면 어쨌든 6 회에 걸쳐 tapply 기능을 입력하는 대신 한 번에이 작업을 수행 할 수 있습니까?

감사합니다. 감사합니다.

+3

아마도'aggregate (price ~ brand + year, FUN = mean, data = car)'입니다. 이것은 추측 일뿐입니다 [질문을 재현 가능하게 만드십시오] (http://stackoverflow.com/q/5963269/1315767)) 그리고 당신은 더 나은 대답을 얻을 것이다 –

+1

당신은 간단하게 할 수있는'tapply (자동차 $ 가격, 목록 (자동차 $ 브랜드, 자동차 $ 년), FUN = 평균, na.rm = TRUE)' –

+0

감사합니다 @ SimonO'Hanlon, 후속 질문을해도 될까요? 결과를 어떻게 표시 할 수 있습니까? 가장 간단한 함수 플롯()을 사용했지만 일종의 3x3 매트릭스 플롯을 제공합니다. 저는 y 축을 가격과 x 축으로 일목요연하게하고 싶습니다. 그래서 음모의 점들은 다른 색의 자동차 브랜드입니다. 감사 !! – user2978129

답변

6
tt=by(car$price, list(car$brand,car$year),mean,na.rm=T); 
print(tt["1986","Toyota"]) 

똑바로 대신 목록의 data.frame의 원하는 경우 Jilber의 제안은 좋네요 :

aggregate(price ~ brand + year, FUN=mean, data=car, na.rm=T) 

사용 시몬의 제안 당신은 결과를 검색 쉽게 매트릭스에 넣어하고자하는 경우 나중에 :

tt=tapply(car$price , list(car$brand , car$year) , FUN = mean , na.rm = TRUE) 
print(tt["1986","Toyota"]) 

dput(sample_data)을 사용하면 코드를 재현 할 수 있습니다.

+0

'tapply'와'by'는 ​​본질적으로 같습니다. 좋은 대답. +1. –

+0

'dplyr' 스타일 :'q4totalnetassets %> % filter (Country! = "TOTAL") %> % group_by (통화) %> 요약하는 것 (합계 = 합계) –

관련 문제