나는 각 라인이 개인을 나타내는 데이터 프레임을 가지고있다. 이 데이터 프레임에는 나이와 연도라는 두 가지 변수가 있습니다. 1 년 평균 연령 표를 만들고 싶습니다. 내가 어떻게 해?R에서 합계 대신 xtabs로 평균을 계산할 수 있습니까?
제가 생각할 수있는 가장 좋은 점은 xtabs(age ~ year, dataframe)
이었습니다. 그러나 이것은 연로 한 해를 말해줍니다.
나는 각 라인이 개인을 나타내는 데이터 프레임을 가지고있다. 이 데이터 프레임에는 나이와 연도라는 두 가지 변수가 있습니다. 1 년 평균 연령 표를 만들고 싶습니다. 내가 어떻게 해?R에서 합계 대신 xtabs로 평균을 계산할 수 있습니까?
제가 생각할 수있는 가장 좋은 점은 xtabs(age ~ year, dataframe)
이었습니다. 그러나 이것은 연로 한 해를 말해줍니다.
사용 aggregate
: 당신은 ... xtabs를 사용하여 위의 답을해야하는 경우
xtabs(hp~cyl+gear,aggregate(hp~cyl+gear,mtcars,mean))
gear
cyl 3 4 5
4 97.0000 76.0000 102.0000
6 107.5000 116.5000 175.0000
8 194.1667 0.0000 299.5000
는 특히 ddply
ddply(dataframe, .(year), summarise, mean(age))
의 plyr 패키지에서보세요.
또 다른 매우 우아한 해결책을 보여 주셔서 고맙습니다. 그러나 실제 문제에는 세 가지 변수가 포함되어 있기 때문에 저는 여전히 찌르기를 할 것입니다. :) –
당신은'ddply (dataframe,. (year), summarize, mean (age), max (height), sd (weight) 등등. – Justin
xtabs
해결책이 유용합니다. 나는 나를 위해 그것을 방해하는 패키지를로드해야한다 (그리고 오류를 준다). 또 다른 해결책은 다음과 같습니다
tapply(dfrm$age, dfrm$year, FUN=mean)
테이블 (배열) 단지 형태 list(fac1, fac2, fac3)
의 두 번째 INDEX 인수에 추가 요소를 계속 추가에 추가 차원을 얻을 수 있습니다.
tapply(mtcars$hp, list(mtcars$cyl,mtcars$gear), mean)
3 4 5
4 97.0000 76.0 102.0
6 107.5000 116.5 175.0
8 194.1667 NA 299.5
또는 더욱 조밀 :
with(mtcars, tapply(hp, list(cyl, gear), mean))
다른 해결책은 시대의 합을 계산하는 2 개 xtabs 기능 제를 사용하여, 2 인 하나는 각 그룹에 대한 인원수를 얻고 그 다음 합계/인원수로 평균을 구합니다.
예를 들면, xtabs (세 ~ 년, dataframe)/xtabs (~ 년, dataframe는)
그러나, 집계 방식은 중간 또는 dataframe에 적용되는 다른 기능을 계산하는 데 사용할 수 있습니다. 확실히 더 유연합니다.
완벽! 그리고 꽤 우아한 솔루션, 나는 추가해야합니다. 감사! –