Вывод таблицы с субделяйми в латекс с помощью ZTABLE

StackOverflow https://stackoverflow.com//questions/24047217

  •  21-12-2019
  •  | 
  •  

Вопрос

Я хочу создать латексную таблицу со многими различными субфетами.Я в основном хочу создать таблицу с ответами из опроса.

Например, таблица для первого вопроса:

Q1 <- structure(c(6L, 14L, 20L, 15L, 2L, 3L, 12L, 25L, 7L, 1L, 2L, 
13L, 35L, 10L, 3L), .Dim = c(5L, 3L), .Dimnames = structure(list(
    c("none", "very little", "some", "most", "all"), c("control", 
    "treatment1", "treatment2")), .Names = c("", "")), class = "table")
.

Таблица для второго вопроса:

Q2 <- structure(c(39L, 12L, 4L, 1L, 1L, 31L, 13L, 4L, 0L, 0L, 39L, 
20L, 4L, 0L, 0L), .Dim = c(5L, 3L), .Dimnames = structure(list(
    c("A", "B+", "B", "B-", "C"), c("control", "treatment1", 
    "treatment2")), .Names = c("", "")), class = "table")
.

Я хочу, чтобы мой латексный вывод посмотреть что-то вроде:

                    Some Title
                    Question 1
             control treatment1 treatment2
  none              6          3          2
  very little      14         12         13
  some             20         25         35
  most             15          7         10
  all               2          1          3
                    Question 2
  A                39         31         39
  B+               12         13         20
  B                 4          4          4
  B-                1          0          0
  C                 1          0          0
.

Я могу создавать отдельные таблицы с таблицей X, но это требует некоторой ручной работы в латессе, чтобы объединить их.Прямо сейчас я делаю:

print(xtable(Q1), floating = FALSE, only.contents = FALSE, 
      include.rownames = TRUE, include.colnames = TRUE, hline.before = c(1))
.

Это было полезно?

Решение

Хотя этот метод немного обходной путь, он приближается к тому, что вы ищете.Чтобы получить работоспособную структуру, мне нужно было расширить свои таблицы expand.table из пакета EPITOLS и используйте функцию tabular из пакета таблиц, чтобы получить пользовательский формат.Это может быть не лучшим или наиболее эффективным способом, но если вы пытаетесь избежать некоторой более поздней обработки латекса, это может помочь.После фильтрации и преобразования в матрицу вы можете использовать XTable для создания следующей таблицы:

Введите описание изображения здесь

r код

require(xtable)
require(epitools)
require(tables)

Q1 <- structure(c(6L, 14L, 20L, 15L, 2L, 3L, 12L, 25L, 7L, 1L, 2L, 
                  13L, 35L, 10L, 3L), .Dim = c(5L, 3L), .Dimnames = structure(list(
                    c("none", "very little", "some", "most", "all"), c("control", 
                                                                       "treatment1", "treatment2")), .Names = c("", "")), class = "table")

Q2 <- structure(c(39L, 12L, 4L, 1L, 1L, 31L, 13L, 4L, 0L, 0L, 39L, 
                  20L, 4L, 0L, 0L), .Dim = c(5L, 3L), .Dimnames = structure(list(
                    c("A", "B+", "B", "B-", "C"), c("control", "treatment1", 
                                                    "treatment2")), .Names = c("", "")), class = "table")


names(dimnames(Q1)) <- c("Responses", "Conditions")
names(dimnames(Q2)) <- c("Responses", "Conditions")
q1_df <- expand.table(Q1)
q1_df$Question <- "Question 1"
q2_df <- expand.table(Q2)
q2_df$Question <- "Question 2"
df <- rbind(q1_df, q2_df)


tab <- tabular((Factor(Question)*Factor(Responses)+1) ~ (Conditions), data=df)
tab <- tab[tab[,1] > 0,]
tab <- as.matrix(tab[1:nrow(tab) -1,])

print(xtable(tab, caption="Some Title"), include.rownames=F, include.colnames=F, latex.environments="center", comment=F, caption.placement='top', hline.after=c(0, nrow(tab)))
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top