2014-11-13 5 views
1

를 사용하여 개별 HTML 파일에 그룹 및 인쇄 그룹 특정 행에 의한 dataframe 내가, 그룹 당 많은 행이 키가 큰 dataframe을 가지고과 같이 말 예 length(levels(df$group)) 별도의 dataframes로분할은 판더과 교감

df_a <- df[df$group=="a",]; df_b <- df[df$group == "b",] ; ...

df 분할 그리고 아마도 Rmarkdown 및 012,331,661,958을 사용하여 별도의 HTML/PDF/DOCX 파일 (각 dataframe를 인쇄).

큰 데이터 프레임이 있고 각 그룹에 대해 개인화 된 보고서를 만들고 싶습니다. a, b, c 등 감사합니다.

업데이트이 스레드와 another thread에서 @daroczig의 조언에 따라 (2014 년 11 월)

, 나는 단순히 모든 열과 행의 멋지게 형식의 테이블을 인쇄 할 내 자신의 템플릿을 만들기 위해 시도 그룹당 원래 sapply() 함수로 "correlations" 템플릿 호출로 대체 할 수 있습니다. 간단한 인쇄 작업이 끝나면 템플릿에 추가 맞춤 설정을하고 싶기 때문에 좋은 표를 인쇄하는 것보다는 내 자신의 템플릿을 만들고 싶습니다 (예 : 친절하게 답변 한 @ Thomas). 어쨌든, 나는 확실히 그것을 강탈했습니다

<!--head 
meta: 
    title: Sample Report 
    author: Nicapyke 
    description: This is a demo 
    packages: ~ 
inputs: 
- name: eachgroup 
    class: character 
    standalone: TRUE 
    required: TRUE 
head--> 

### Records received up to present for Group <%= eachgroup %> 

<%= 
pandoc.table(df[df$group == eachgroup, ]) 
%> 

그런 다음 내 작업 디렉토리에 groupreport.rapport로, 내가 @ daroczig의 반응을 모델로 다음과 같은 R 코드, 쓴 저장 한 후 :

allgroups <- unique(df$group) 

library(rapport) 


for (eachstate in allstates) { 
    rapport.docx("FILEPATHHERE", eachgroup = eachgroup) 
} 

내가받은이 오류 :

Error in openFileInOS(f.out) : File not found! 

나는 무슨 일이 일어 났는지 잘 모르겠다. pander 설명서에서 이것이 시스템 파일을 찾고 있음을 알지만 그다지 중요하지 않습니다. 어쨌든이 오류는 문제의 근원에 있지 않습니다. 1) 사용자 정의 템플릿 헤더의 input 섹션에 무엇이 들어가야하는지, 2) 어떤 R 코드가 rapport 템플릿과 R 스크립트.

rapportpander으로 경험 부족을 나타내는 많은 오류를 만들 수 있음을 알고 있습니다. 양해 해 주셔서 감사합니다.

N.B : 당신은합니다 (xtable 패키지) by (또는 split)와 xtable하여이 작업을 수행 할 수 있습니다

> sessionInfo() 
R version 3.1.2 (2014-10-31) 
Platform: x86_64-w64-mingw32/x64 (64-bit) 

locale: 
[1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_United States.1252 
[3] LC_MONETARY=English_United States.1252 LC_NUMERIC=C       
[5] LC_TIME=English_United States.1252  

attached base packages: 
[1] stats  graphics grDevices utils  datasets methods base  

other attached packages: 
[1] knitr_1.8  dplyr_0.3.0.2 rapport_0.51 yaml_2.1.13  pander_0.5.1 
plyr_1.8.1   lattice_0.20-29 

loaded via a namespace (and not attached): 
[1] assertthat_0.1 DBI_0.3.1  digest_0.6.4 evaluate_0.5.5 formatR_1.0 grid_3.1.2  
[7] lazyeval_0.1.9 magrittr_1.0.1 parallel_3.1.2 Rcpp_0.11.3 reshape_0.8.5 stringr_0.6.2 
[13] tools_3.1.2 

답변

2

약간 주제에서 벗어난 보고서 템플릿을 사용하여 별도의 보고서,하지만 여전히 R/인하 한 줄 다음 rapport 패키지는 모든 (하위) 데이터 세트에 (사전 정의 또는 사용자 정의) 보고서 템플릿을 실행할 수 있습니다

> library(rapport) 
> sapply(levels(df$group), function(g) rapport.html('correlations', data = df[df$group == g, ], vars = c('v1', 'v2', 'v3'))) 
Exported to */tmp/RtmpYyRLjf/rapport-correlations-1-0.[md|html]* under 0.683 seconds. 
Exported to */tmp/RtmpYyRLjf/rapport-correlations-2-0.[md|html]* under 0.888 seconds. 
Exported to */tmp/RtmpYyRLjf/rapport-correlations-3-0.[md|html]* under 1.063 seconds. 

markdown에서 HTML/docx/PDF/other 형식으로 내 보냅니다. 빠른 데모를 위해, 나는 결과 문서를 업로드 한 :이 답변, @Thomas에 대한

+0

고마워, @daroczig. 이것은 제가 찾고있는 것 이상의 것일 수 있습니다. 간단한 커스텀 템플릿을 만들기 전에'markdown' 문법과'rapport' 문법을 배우는데 얼마나 많은 시간을 투자 했는가? – mcjudd

+1

@ Nicapyke markdown은 매우 쉽습니다. 5 분 만에 가장 중요한 것들을 익힐 수 있습니다. 좀 더 복잡한 작업을하려면 반드시 [Pandoc 's markdown manual] (http://johnmacfarlane.net/pandoc/README.html#pandocs-markdown)을 읽어야하지만 수동으로 만들 필요는 없습니다. [pander 패키지] (http://rapporter.github.io/pander/)는 원시 R 객체에서 자동으로 수행 할 수 있습니다. 'rapport'에 대해서 : 저는 저자 중 한 명입니다. 제 의견은 오히려 일방적입니다 :) 그러나'markdown'을 배우는 것보다 더 많은 것을 취하지 않아야합니다. 당신이 갇히게된다면 저를 핑계로 보내주십시오. – daroczig

+0

답장을 보내 주셔서 감사합니다, @daroczig. 나는 조금 더 서핑을했고 당신이 여기서 한 대답을 발견했다 : http://stackoverflow.com/questions/25407307/how-to-produce-markdown-document-for-each-row-of-dataframe-in- r? lq = 1 그게 제가하려고하는 것보다 더 가깝습니다 (물론 데이터 프레임 당 여러 행 제외). 그것을 구현하고 내가 어떤 문제가 있다면 알려주지. 다시 한번 감사드립니다. – mcjudd

1

.여기에 내가 파일을 인쇄하려면 xtable 각 부분 집합의 개체 및 그들에 다음 루프를 만들 :

library('xtable') 
s <- by(df, df$group, xtable) 
for(i in seq_along(s)) print(s[[i]], file = paste0('df',names(s)[i],'.tex')) 

을 당신이 몽 상가 패키지를 사용하는 경우, 대신 dataframe 자체의 dataframe의 좋은 요약을 얻을 수 있습니다

library('stargazer') 
by(df, df$group, stargazer, out = paste0('df',unique(df$group),'.tex')) 

이러한 파일은 예를 들어 PDF 보고서에 쉽게 포함 할 수 있어야합니다. xtable 또는 stargazer을 사용하여 HTML 마크 업을 사용할 수도 있습니다.

+0

감사합니다. 나는 LaTeX에 익숙하지 않다. 내 컴퓨터에 MiKTeX 2.9가 설치되어 있습니다. 파일을 MiKTeX로 로딩하고 인터프리터가 올바르게 포맷 된 테이블을 평가하고 인쇄하도록하는 것과 같이 .tex 코드의 출력을 만드는 것이 간단합니까? 감사. – mcjudd

+1

LaTeX는 Rstudio가 Rmd 파일에서 pdf를 만드는 데 사용하는 도구입니다. MikTeX는 기본적으로 LaTeX를 구현 한 것입니다. 위의 예제가 거의 작동합니다. 기본적인 LaTeX 튜토리얼에서는 간단한 테이블에이 테이블을 삽입하는 방법을 보여줍니다. – Thomas

+0

감사합니다. 또한 프로그래밍의 특정 측면에 초점을 맞추고 시작부터 사용할 수있는 매우 기본적인 기능을 인식하지 못하는 것은 재미 있습니다. 여기서 '쪼개기'는 완벽한 예입니다. 'plyr'와'dplyr'는 더 좋든 나쁘 든 기반 R에서 나를 보호 해주었습니다. :) – mcjudd