Запись фрейма данных в pdf таблицу

У меня есть фрейм данных, который я хотел бы записать в PDF-файл в организованном порядке.

Например, мой df выглядит так:

Date    County    Trade
1/1/2012  USA     5
1/1/2012  Japan   4
1/2/2012  USA     10
1/3/2012  Germany 15

Я хотел бы, чтобы выходные данные были сгруппированы по дате, ставили пробел или разрыв строки после каждой группы;

У меня есть этот кусок кода, но это распечатывает все в файл PDF без группировки:

library(gridExtra)
pdf("trade.pdf", height=11, width=8.5)
grid.table(df)
dev.off()

Любые идеи, как лучше всего представить этот набор данных в PDF-файл с группировкой по дате? Мне нравится использовать grid.Extra. Кто-нибудь знает, как поставить заголовок в grid.Extra?

4 ответа

Решение

Этот код должен работать:

library(gridExtra)

df <- read.table(text = 
"1/1/2012  USA     5
1/1/2012  Japan   4
1/2/2012  USA     10
1/3/2012  Germany 15"
)
names(df) <- c("Date","Country","Trade")

EqDatedf <- as.data.frame(df[1,])
EmptyLine <- data.frame(Date = "",Country = "",Trade = "")

pdf(file = "q.pdf")

for (i in 2:nrow(df)) 
{
if (as.vector(df$Date[i])  ==  as.vector(df$Date[i-1])) 
{EqDatedf <- rbind(EqDatedf, df[i,])}

else {
EqDatedf <- rbind(EqDatedf, EmptyLine)
EqDatedf <- rbind(EqDatedf, df[i,]) 
     }
}

grid.table(EqDatedf, show.rownames = FALSE)
dev.off()

Я действительно рекомендую вам использовать Rstudio с Knitr, Создавать хорошие отчеты очень легко.

Например,

\documentclass{article}
\begin{document}
<<myTable,results='asis'>>=
library(xtable)
tab <- read.table(text = 'Date    County    Trade
1/1/2012  USA     5
1/1/2012  Japan   4
1/2/2012  USA     10
1/3/2012  Germany 15',header = TRUE)
print(xtable(tab),hline.after=c(2,3))   ## print.xtable have many smart options
@
\end{document}

По состоянию на 2017 год существует хорошая поддержка форматов презентаций R-studio (Markdown) с пакетом "pander" и выводом в PDF через Beamer. Смотрите пандер: http://rapporter.github.io/pander/

Пример в коде презентации R-studio для печати фрейма данных в виде таблицы:

```{r}    
pander(df)
```

Решение grid.table будет самым быстрым способом создания PDF для коротких таблиц, но это решение не будет работать так, как есть, если у вас таблица длиной более 1 страницы. RStudio + knitr + longtable - это, вероятно, способ создания красиво отформатированных PDF-файлов. Что вам нужно, это что-то вроде:

\documentclass{article}
\usepackage{longtable}
\begin{document}

<<results='asis'>>=
library(xtable)

df = data.frame(matrix(rnorm(400), nrow=100))
xt = xtable(df)
print(xt, 
      tabular.environment = "longtable",
      floating = FALSE
      )
@
\end{document}

Пожалуйста, смотрите этот пост для более подробной информации.

Другие вопросы по тегам