我有一个数据框,我想以有组织的方式将其写入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?
答案 0 :(得分:12)
此代码应该有效:
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()
答案 1 :(得分:8)
我真的建议您将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}
答案 2 :(得分:2)
截至2017年,R-studio演示文稿格式(Markdown)以及&#34; pander&#34;以及通过Beamer输出到PDF有很好的支持。 请参阅pander:http://rapporter.github.io/pander/#pander-an-r-pandoc-writer
用于打印数据框的R-studio演示代码示例:
```{r}
pander(df)
```
答案 3 :(得分:1)
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}
请参阅this帖子了解更多详情。