2009-09-23 5 views
3

R에 복잡한 표를 코딩하는 방법에 대한 좋은 생각이 있습니까?R에서 복잡한 표를 코드화하는 좋은 방법은 무엇입니까?

나는 이것에 대해서는 다소 모호하지만, 나는 미국의 통계 요약과 유사한 복잡성을 가진 테이블을 만들기 위해 스크립트를 만들고 싶다.

예컨대 : http://www.census.gov/compendia/statab/tables/09s0015.pdf

그리고 rbind 및 hbind 문장의 전체 무리를하지 않도록하고 싶습니다.

SAS에는 들었습니다. 테이블 생성 사양 언어가 있습니다. R에 대해 비슷한 기능이 있는지 궁금합니다.

감사합니다.

답변

3

여러 데이터를 하나의 필드 (예 : 상태 별)별로 그룹화하여 적용한 것처럼 보입니까?

이렇게하는 방법에는 여러 가지가 있습니다. this related question을 참조하십시오.

해들리 위컴의 reshape 패키지를 사용할 수 있습니다 (reshape homepage 참조). 예를 들어, 당신은 (이 의미가 있지만,이 모양 변경에서 airquality 데이터를 사용) 값으로 그룹화 된 일부 데이터에 적용되는 평균, 합계 및 카운트 기능을 원하는 경우 :

> library(reshape) 
> names(airquality) <- tolower(names(airquality)) 
> # melt the data to just include month and temp 
> aqm <- melt(airquality, id="month", measure="temp", na.rm=TRUE) 
> # cast by month with the various relevant functions 
> cast(aqm, month ~ ., function(x) c(mean(x),sum(x),length(x))) 
    month X1 X2 X3 
1  5 66 2032 31 
2  6 79 2373 30 
3  7 84 2601 31 
4  8 84 2603 31 
5  9 77 2307 30 

또는 당신이 by()을 사용할 수 있습니다 기능. 인덱스는 상태를 나타냅니다. 귀하의 경우에는 하나의 기능 (예 : 평균)을 적용하는 대신 여러 가지 작업 (필요에 따라)을 수행 할 자신의 기능을 적용 할 수 있습니다 (예 : function(x) { c(mean(x), length(x)) }). 그런 다음 출력에 do.call("rbind" (예 :)을 실행하십시오.

또한 Sweave (xtable 포함) 또는 Jeffrey Horner's brew package과 같은보고 패키지 사용에 대해 고려할 수 있습니다. 사용 방법을 보여주는 great post on the learnr blog about creating repetitive reports이 있습니다.

+0

그냥 빨리 발언은'each'뿐만 아니라 열 이름을 담당한다. 가장 간단한 방법은 'c'를 사용하는 것입니다. 'cast (aqm, month ~., c (mean, sum, length)') – learnr

1

또 다른 옵션은 plyr 패키지입니다. 2008 년 개정 보고서 :

library(plyr) 
names(airquality) <- tolower(names(airquality)) 
ddply(airquality, "month", function(x){ 
    with(x, c(meantemp = mean(temp), maxtemp = max(temp), nonsense = max(temp) - min(solar.r))) 
}) 
0

Here is an interesting blog posting on this topic. 저자는 유엔의 세계 인구 전망에 유사한 보고서를 작성하려고합니다. . 각이 (`), 길이 합을 의미 ~ (AQM, 달 캐스트`와 -하는 데 도움이

희망, 찰리

+0

찰리 : 내 대답의 맨 아래에있는 링크가 같지 않습니까? – Shane

+0

안녕하세요 Shane, You 맞아, 미안해 너의 연결을 알지 못했다. – Charlie