2012-05-02 2 views
4

Как я могу использовать Hmisc «s latex, чтобы получить таблицу, как ...Hmisc: Как сгруппировать переменные столбца с латексом()?

     Group 1      Group 2 
d n beta Sub-group 1 Sub-group 2 Sub-group 1 Sub-group 2 
10 100 0.25  1    9 
     0.75  2 
    500 0.25  3   10 
     0.75  4   11    ...   ... 
100 100 0.25  5   12 
     0.75  6   13 
    500 0.25  7   ... 
     0.75  8 

...? Ниже я до сих пор. Как-то я хотел бы сказать latex, чтобы использовать первые три столбца для отображения ярлыков строк. Кроме того, NA не удаляется.

x <- matrix(1:72, ncol=4, nrow=8) # data part 
colnames(x) <- c("gr1.sgr1", "gr1.sgr2", "gr2.sgr1", "gr2.sgr2") 
rmNames <- function(x) {x[c(FALSE, x[-1]==x[-length(x)])] <- ""; x} 
rn <- apply(expand.grid(beta=c(0.25, 0.75), n=c(100, 500), d=c(10, 100))[, 3:1], 2, rmNames) 
x <- cbind(rn, x) 
x[2,5] <- NA 

require(Hmisc) 
latex(x, 
     file="", 
     cgroup=c("", "Group 1", "Group 2"), 
     n.cgroup=c(3, 2, 2), 
     na.blank=TRUE, 
     rowlabel=c("d", "n", "beta"), 
     booktabs=TRUE, 
     collabel.just=rep("c", 2)) 

Update

С наступлением Joran, я получить (так что добавление rownames=NULL и rep("c",7)):

\begin{table}[!tbp] 
\begin{center} 
\begin{tabular}{lllcllcll} 
\toprule 
\multicolumn{3}{c}{\bfseries }& 
\multicolumn{1}{c}{\bfseries }& 
\multicolumn{2}{c}{\bfseries Group 1}& 
\multicolumn{1}{c}{\bfseries }& 
\multicolumn{2}{c}{\bfseries Group 2} 
\tabularnewline 
\cline{1-9} 
\multicolumn{1}{c}{d}&\multicolumn{1}{c}{n}&\multicolumn{1}{c}{beta}&\multicolumn{1}{c}{}&\multicolumn{1}{c}{gr1.sgr1}&\multicolumn{1}{c}{gr1.sgr2}&\multicolumn{1}{c}{}&\multicolumn{1}{c}{gr2.sgr1}&\multicolumn{1}{c}{gr2.sgr2}\tabularnewline 
\midrule 
10&100&0.25&&1&9&&17&25\tabularnewline 
&&0.75&&2&NA&&18&26\tabularnewline 
&500&0.25&&3&11&&19&27\tabularnewline 
&&0.75&&4&12&&20&28\tabularnewline 
100&100&0.25&&5&13&&21&29\tabularnewline 
&&0.75&&6&14&&22&30\tabularnewline 
&500&0.25&&7&15&&23&31\tabularnewline 
&&0.75&&8&16&&24&32\tabularnewline 
\bottomrule 
\end{tabular} 
\end{center} 
\end{table} 

1) Почему пустые столбцы вставляются (\multicolumn{1}{c}{})?

2) Почему не заменяются NA?

+0

Добавление 'rowname = NULL' и изменение последнего аргумента в' rep ("c", 7) 'для меня работает. (Хотя мне пришлось немного изменить код, так как у меня нет функции 'rmNames'.) – joran

+0

Привет, Джордан, спасибо, что помогли мне. Я ввел 'rmNames' (извините за неудобства) и обновил сообщение. Мне интересно, почему вставляются пустые столбцы и почему 'NA' не заменяются строками '' ''. –

ответ

1

Таким образом, существует проблема принуждения в rmNames. Вероятно, вы имели в виду:

rmNames <- function(x) {x[c(FALSE, x[-1]==x[-length(x)])] <- NA; x} 

Назначение пустых символов заканчивается тем, что принуждает все к символу. Я, честно говоря, не совсем уверен, как это вызвало latex, потому что значение, о котором идет речь, по-прежнему является NA, но, похоже, это изменение исправить.

Что касается дополнительных столбцов, я не знаю. Глядя на итоговые PDF-файлы, я могу только предположить, что автор считает, что при группировании столбцов он выглядит лучше, чем заполнять их пустыми столбцами, и я признаю, что они могут иметь точку, если это правда.

Смежные вопросы