Author: Keon-Woong Moon
Date: 2018-07-23

# Package ztable

#### Keon-Woong Moon

#### 2018-07-23

# Introduction

## Table Show

Package “ztable” make everything possible about table. Basically, An object of “ztable” made from a data.frame. The default output format of ztable is RStudio::viewer or web-browser format(type=“viewer”). So if you want to use ztable in a “html” format, you should change the parameter ztable.type to “html”. If you want to use ztable in latex format, you should change the parameter ztable.type to “latex”.

    library(ztable)
    library(magrittr)
    options(ztable.type="html")
    z=ztable(head(iris))
    z

| Sepal.Length | Sepal.Width | Petal.Length | Petal.Width | Species
--- | --- | --- | --- | --- | ---
1 | 5.10 | 3.50 | 1.40 | 0.20 | setosa
2 | 4.90 | 3.00 | 1.40 | 0.20 | setosa
3 | 4.70 | 3.20 | 1.30 | 0.20 | setosa
4 | 4.60 | 3.10 | 1.50 | 0.20 | setosa
5 | 5.00 | 3.60 | 1.40 | 0.20 | setosa
6 | 5.40 | 3.90 | 1.70 | 0.40 | setosa

You can change the position of data in each cell by adjusting the parameter “align”.

    z=ztable(head(iris),align="cccccc")
    z

| Sepal.Length | Sepal.Width | Petal.Length | Petal.Width | Species
--- | --- | --- | --- | --- | ---
1 | 5.10 | 3.50 | 1.40 | 0.20 | setosa
2 | 4.90 | 3.00 | 1.40 | 0.20 | setosa
3 | 4.70 | 3.20 | 1.30 | 0.20 | setosa
4 | 4.60 | 3.10 | 1.50 | 0.20 | setosa
5 | 5.00 | 3.60 | 1.40 | 0.20 | setosa
6 | 5.40 | 3.90 | 1.70 | 0.40 | setosa

You can change background color and font color with addRowColor() function.

    z <- ztable(head(iris))
    z <- addRowColor(z, rows=1,bg="#C90000",color="white")
    print(z)

| Sepal.Length | Sepal.Width | Petal.Length | Petal.Width | Species
--- | --- | --- | --- | --- | ---
1 | 5.10 | 3.50 | 1.40 | 0.20 | setosa
2 | 4.90 | 3.00 | 1.40 | 0.20 | setosa
3 | 4.70 | 3.20 | 1.30 | 0.20 | setosa
4 | 4.60 | 3.10 | 1.50 | 0.20 | setosa
5 | 5.00 | 3.60 | 1.40 | 0.20 | setosa
6 | 5.40 | 3.90 | 1.70 | 0.40 | setosa

The pipe operator(“%>%”) from magrittr package can simplify your R code.

    ztable(head(iris)) %>%
        addRowColor(rows=1,bg="#C90000",color="white") %>%
        print

| Sepal.Length | Sepal.Width | Petal.Length | Petal.Width | Species
--- | --- | --- | --- | --- | ---
1 | 5.10 | 3.50 | 1.40 | 0.20 | setosa
2 | 4.90 | 3.00 | 1.40 | 0.20 | setosa
3 | 4.70 | 3.20 | 1.30 | 0.20 | setosa
4 | 4.60 | 3.10 | 1.50 | 0.20 | setosa
5 | 5.00 | 3.60 | 1.40 | 0.20 | setosa
6 | 5.40 | 3.90 | 1.70 | 0.40 | setosa

You can add column groups to ztable using addcgroup function. The n.cgroup means how much columns included in each row group.

    cgroup=c("Sepal","Petal","Species")
    n.cgroup=c(2,2,1)
    z <- ztable(head(iris)) %>%
        addcgroup(cgroup=cgroup,n.cgroup=n.cgroup)
    z

| Sepal |  | Petal |  | Species
| Sepal.Length | Sepal.Width |  | Petal.Length | Petal.Width |  | Species
--- | --- | --- | --- | --- | --- | --- | ---
1 | 5.10 | 3.50 |  | 1.40 | 0.20 |  | setosa
2 | 4.90 | 3.00 |  | 1.40 | 0.20 |  | setosa
3 | 4.70 | 3.20 |  | 1.30 | 0.20 |  | setosa
4 | 4.60 | 3.10 |  | 1.50 | 0.20 |  | setosa
5 | 5.00 | 3.60 |  | 1.40 | 0.20 |  | setosa
6 | 5.40 | 3.90 |  | 1.70 | 0.40 |  | setosa

You can add row groups to ztable using addrgroup function. The n.rgroup means how much rows included in each row group. The cspan.rgroup means how much columns occupied by row group name.

    rgroup=c("OneToThree","Four","FiveToSix")
    n.rgroup=c(3,1,2)

    z <- z %>%
        addrgroup(rgroup=rgroup,n.rgroup=n.rgroup,cspan.rgroup=1)
    z

| Sepal |  | Petal |  | Species
| Sepal.Length | Sepal.Width |  | Petal.Length | Petal.Width |  | Species
--- | --- | --- | --- | --- | --- | --- | ---
OneToThree |  |  |  |  |  |  |
1 | 5.10 | 3.50 |  | 1.40 | 0.20 |  | setosa
2 | 4.90 | 3.00 |  | 1.40 | 0.20 |  | setosa
3 | 4.70 | 3.20 |  | 1.30 | 0.20 |  | setosa
Four |  |  |  |  |  |  |
4 | 4.60 | 3.10 |  | 1.50 | 0.20 |  | setosa
FiveToSix |  |  |  |  |  |  |
5 | 5.00 | 3.60 |  | 1.40 | 0.20 |  | setosa
6 | 5.40 | 3.90 |  | 1.70 | 0.40 |  | setosa

    print(z,type="latex")

You can add another colname(subcolname), the N count for example. The length of subcolnames should be same with column count of data.frame. You can use “NA” and the column name spans 2 rows.

    ncount=c(123,120,123,124)
    sub=paste("(N=",ncount,")",sep="")
    z=addSubColNames(z,c(sub,NA))
    z

| Sepal |  | Petal |  | Species
| Sepal.Length | Sepal.Width |  | Petal.Length | Petal.Width |  | Species
--- | --- | --- | --- | --- | --- | --- | ---
| (N=123) | (N=120) |  | (N=123) | (N=124) |
OneToThree |  |  |  |  |  |  |
1 | 5.10 | 3.50 |  | 1.40 | 0.20 |  | setosa
2 | 4.90 | 3.00 |  | 1.40 | 0.20 |  | setosa
3 | 4.70 | 3.20 |  | 1.30 | 0.20 |  | setosa
Four |  |  |  |  |  |  |
4 | 4.60 | 3.10 |  | 1.50 | 0.20 |  | setosa
FiveToSix |  |  |  |  |  |  |
5 | 5.00 | 3.60 |  | 1.40 | 0.20 |  | setosa
6 | 5.40 | 3.90 |  | 1.70 | 0.40 |  | setosa

You can merge cells by spanRow or spanCol function.

    z=spanRow(z,col=2,from=4,to=7,bg="lightcyan",color="red")
    z=spanRow(z,col=3,from=5,to=7,"platinum","blue")
    z=spanRow(z,col=4,from=6,to=7,"cyan")
    z=spanRow(z,col=5,from=5,to=7,"yellow")
    z=spanRow(z,col=6,from=3,to=5,"yellow")
    z

| Sepal |  | Petal |  | Species
| Sepal.Length | Sepal.Width |  | Petal.Length | Petal.Width |  | Species
--- | --- | --- | --- | --- | --- | --- | ---
| (N=123) | (N=120) |  | (N=123) | (N=124) |
OneToThree |  |  |  |  |  |  |
1 | 5.10 | 3.50 |  | 1.40 | 0.20 |  | setosa
2 | 4.90 | 3.00 |  | 1.40 | 0.20 |  | setosa
3 | 4.70 | 3.20 |  | 1.30 | 0.20 |
Four |  |  |  |  |
4 | 3.10 |  | 1.50 | 0.20 |
FiveToSix |  |  |  |
5 |  | 1.40 |  | setosa
6 |  |  | setosa

    z=spanCol(z,row=2,from=3,to=4,"yellow")
    z=spanCol(z,row=3,from=4,to=5,"lightblue")
    z

| Sepal |  | Petal |  | Species
| Sepal.Length | Sepal.Width |  | Petal.Length | Petal.Width |  | Species
--- | --- | --- | --- | --- | --- | --- | ---
| (N=123) | (N=120) |  | (N=123) | (N=124) |
OneToThree |  |  |  |  |  |  |
1 | 5.10 | 3.50 | 0.20 |  | setosa
2 | 4.90 | 3.00 |  | 1.40 |  | setosa
3 | 4.70 | 3.20 |  | 1.30 | 0.20 |
Four |  |  |  |  |
4 | 3.10 |  | 1.50 | 0.20 |
FiveToSix |  |  |  |
5 |  | 1.40 |  | setosa
6 |  |  | setosa

You can add or adjust vertical lines of table by vlines function

    vlines(z,type="all")       # type=1 gets same result

| Sepal | Petal | Species
| Sepal.Length | Sepal.Width | Petal.Length | Petal.Width | Species
--- | --- | --- | --- | --- | ---
| (N=123) | (N=120) | (N=123) | (N=124)
OneToThree |  |  |  |  |
1 | 5.10 | 3.50 | 0.20 | setosa
2 | 4.90 | 3.00 | 1.40 | setosa
3 | 4.70 | 3.20 | 1.30 | 0.20
Four |  |  |
4 | 3.10 | 1.50 | 0.20
FiveToSix |  |
5 | 1.40 | setosa
6 | setosa

    z <- vlines(z,type="none")      # type=0 gets same result
    z

| Sepal |  | Petal |  | Species
| Sepal.Length | Sepal.Width |  | Petal.Length | Petal.Width |  | Species
--- | --- | --- | --- | --- | --- | --- | ---
| (N=123) | (N=120) |  | (N=123) | (N=124) |
OneToThree |  |  |  |  |  |  |
1 | 5.10 | 3.50 | 0.20 |  | setosa
2 | 4.90 | 3.00 |  | 1.40 |  | setosa
3 | 4.70 | 3.20 |  | 1.30 | 0.20 |
Four |  |  |  |  |
4 | 3.10 |  | 1.50 | 0.20 |
FiveToSix |  |  |  |
5 |  | 1.40 |  | setosa
6 |  |  | setosa

    z <- z %>% vlines(add=c(1,2,5))
    z

| Sepal |  | Petal |  | Species
| Sepal.Length | Sepal.Width |  | Petal.Length | Petal.Width |  | Species
--- | --- | --- | --- | --- | --- | --- | ---
| (N=123) | (N=120) |  | (N=123) | (N=124) |
OneToThree |  |  |  |  |  |  |
1 | 5.10 | 3.50 | 0.20 |  | setosa
2 | 4.90 | 3.00 |  | 1.40 |  | setosa
3 | 4.70 | 3.20 |  | 1.30 | 0.20 |
Four |  |  |  |  |
4 | 3.10 |  | 1.50 | 0.20 |
FiveToSix |  |  |  |
5 |  | 1.40 |  | setosa
6 |  |  | setosa

Please note that if you add vertical lines between groups, the space between groups(empty columns) disappeared and vice versa.

## Merge two tables

You can bind two or more data.frame by cbind function.

    t1=head(iris,10)[,c(1,3,5)]
    t2=tail(iris,10)[,c(1,3,5)]
    t=cbind(t1,t2)
    z=ztable(t,caption="Table 1. Top 10 and Last 10 Data from iris",align="ccccccc")
    z

Table 1. Top 10 and Last 10 Data from iris
| Sepal.Length | Petal.Length | Species | Sepal.Length | Petal.Length | Species
--- | --- | --- | --- | --- | --- | ---
1 | 5.10 | 1.40 | setosa | 6.70 | 5.60 | virginica
2 | 4.90 | 1.40 | setosa | 6.90 | 5.10 | virginica
3 | 4.70 | 1.30 | setosa | 5.80 | 5.10 | virginica
4 | 4.60 | 1.50 | setosa | 6.80 | 5.90 | virginica
5 | 5.00 | 1.40 | setosa | 6.70 | 5.70 | virginica
6 | 5.40 | 1.70 | setosa | 6.70 | 5.20 | virginica
7 | 4.60 | 1.40 | setosa | 6.30 | 5.00 | virginica
8 | 5.00 | 1.50 | setosa | 6.50 | 5.20 | virginica
9 | 4.40 | 1.40 | setosa | 6.20 | 5.40 | virginica
10 | 4.90 | 1.50 | setosa | 5.90 | 5.10 | virginica

And then, you can add column groups, row groups, add row colors, add column colors, add cell colors, and merge cells

    cgroup=c("Top 10","Last 10")
    n.cgroup=c(3,3)
    z=addcgroup(z,cgroup=cgroup,n.cgroup=n.cgroup)
    z

Table 1. Top 10 and Last 10 Data from iris
| Top 10 |  | Last 10
| Sepal.Length | Petal.Length | Species |  | Sepal.Length | Petal.Length | Species
--- | --- | --- | --- | --- | --- | --- | ---
1 | 5.10 | 1.40 | setosa |  | 6.70 | 5.60 | virginica
2 | 4.90 | 1.40 | setosa |  | 6.90 | 5.10 | virginica
3 | 4.70 | 1.30 | setosa |  | 5.80 | 5.10 | virginica
4 | 4.60 | 1.50 | setosa |  | 6.80 | 5.90 | virginica
5 | 5.00 | 1.40 | setosa |  | 6.70 | 5.70 | virginica
6 | 5.40 | 1.70 | setosa |  | 6.70 | 5.20 | virginica
7 | 4.60 | 1.40 | setosa |  | 6.30 | 5.00 | virginica
8 | 5.00 | 1.50 | setosa |  | 6.50 | 5.20 | virginica
9 | 4.40 | 1.40 | setosa |  | 6.20 | 5.40 | virginica
10 | 4.90 | 1.50 | setosa |  | 5.90 | 5.10 | virginica

    rgroup=c("Top 1-3","Top 4-5",NA," Top 7-10")
    n.rgroup=c(3,2,1,4)
    z=addrgroup(z,rgroup=rgroup,n.rgroup=n.rgroup,cspan.rgroup=1)
    z

Table 1. Top 10 and Last 10 Data from iris
| Top 10 |  | Last 10
| Sepal.Length | Petal.Length | Species |  | Sepal.Length | Petal.Length | Species
--- | --- | --- | --- | --- | --- | --- | ---
Top 1-3 |  |  |  |  |  |  |
1 | 5.10 | 1.40 | setosa |  | 6.70 | 5.60 | virginica
2 | 4.90 | 1.40 | setosa |  | 6.90 | 5.10 | virginica
3 | 4.70 | 1.30 | setosa |  | 5.80 | 5.10 | virginica
Top 4-5 |  |  |  |  |  |  |
4 | 4.60 | 1.50 | setosa |  | 6.80 | 5.90 | virginica
5 | 5.00 | 1.40 | setosa |  | 6.70 | 5.70 | virginica
6 | 5.40 | 1.70 | setosa |  | 6.70 | 5.20 | virginica
Top 7-10 |  |  |  |  |  |  |
7 | 4.60 | 1.40 | setosa |  | 6.30 | 5.00 | virginica
8 | 5.00 | 1.50 | setosa |  | 6.50 | 5.20 | virginica
9 | 4.40 | 1.40 | setosa |  | 6.20 | 5.40 | virginica
10 | 4.90 | 1.50 | setosa |  | 5.90 | 5.10 | virginica

    z <- z %>%
        addRowColor(c(5,10),"pink") %>%
        addColColor(4,"amber") %>%
        addCellColor(rows=c(5,10),cols=4,"red","white")
    z

Table 1. Top 10 and Last 10 Data from iris
| Top 10 |  | Last 10
| Sepal.Length | Petal.Length | Species |  | Sepal.Length | Petal.Length | Species
--- | --- | --- | --- | --- | --- | --- | ---
Top 1-3 |  |  |  |  |  |  |
1 | 5.10 | 1.40 | setosa |  | 6.70 | 5.60 | virginica
2 | 4.90 | 1.40 | setosa |  | 6.90 | 5.10 | virginica
3 | 4.70 | 1.30 | setosa |  | 5.80 | 5.10 | virginica
Top 4-5 |  |  |  |  |  |  |
4 | 4.60 | 1.50 | setosa |  | 6.80 | 5.90 | virginica
5 | 5.00 | 1.40 | setosa |  | 6.70 | 5.70 | virginica
6 | 5.40 | 1.70 | setosa |  | 6.70 | 5.20 | virginica
Top 7-10 |  |  |  |  |  |  |
7 | 4.60 | 1.40 | setosa |  | 6.30 | 5.00 | virginica
8 | 5.00 | 1.50 | setosa |  | 6.50 | 5.20 | virginica
9 | 4.40 | 1.40 | setosa |  | 6.20 | 5.40 | virginica
10 | 4.90 | 1.50 | setosa |  | 5.90 | 5.10 | virginica

    z <- z %>%
        spanCol(row=2,from=2,to=3,"lightcyan","red") %>%
        spanRow(col=7,from=7,to=8,"cyan")
    z

Table 1. Top 10 and Last 10 Data from iris
| Top 10 |  | Last 10
| Sepal.Length | Petal.Length | Species |  | Sepal.Length | Petal.Length | Species
--- | --- | --- | --- | --- | --- | --- | ---
Top 1-3 |  |  |  |  |  |  |
1 | 5.10 | setosa |  | 6.70 | 5.60 | virginica
2 | 4.90 | 1.40 | setosa |  | 6.90 | 5.10 | virginica
3 | 4.70 | 1.30 | setosa |  | 5.80 | 5.10 | virginica
Top 4-5 |  |  |  |  |  |  |
4 | 4.60 | 1.50 | setosa |  | 6.80 | 5.90 | virginica
5 | 5.00 | 1.40 | setosa |  | 6.70 | 5.70 | virginica
6 | 5.40 | 1.70 | setosa |  | 6.70 | 5.20 | virginica
Top 7-10 |  |  |  |  |  |
7 | 4.60 | 1.40 | setosa |  | 6.30 | 5.00
8 | 5.00 | 1.50 | setosa |  | 6.50 | 5.20 | virginica
9 | 4.40 | 1.40 | setosa |  | 6.20 | 5.40 | virginica
10 | 4.90 | 1.50 | setosa |  | 5.90 | 5.10 | virginica

    hlines(z,type=1)

Table 1. Top 10 and Last 10 Data from iris
| Top 10 |  | Last 10
| Sepal.Length | Petal.Length | Species |  | Sepal.Length | Petal.Length | Species
--- | --- | --- | --- | --- | --- | --- | ---
Top 1-3 |  |  |  |  |  |  |
1 | 5.10 | setosa |  | 6.70 | 5.60 | virginica
2 | 4.90 | 1.40 | setosa |  | 6.90 | 5.10 | virginica
3 | 4.70 | 1.30 | setosa |  | 5.80 | 5.10 | virginica
Top 4-5 |  |  |  |  |  |  |
4 | 4.60 | 1.50 | setosa |  | 6.80 | 5.90 | virginica
5 | 5.00 | 1.40 | setosa |  | 6.70 | 5.70 | virginica
6 | 5.40 | 1.70 | setosa |  | 6.70 | 5.20 | virginica
Top 7-10 |  |  |  |  |  |
7 | 4.60 | 1.40 | setosa |  | 6.30 | 5.00
8 | 5.00 | 1.50 | setosa |  | 6.50 | 5.20 | virginica
9 | 4.40 | 1.40 | setosa |  | 6.20 | 5.40 | virginica
10 | 4.90 | 1.50 | setosa |  | 5.90 | 5.10 | virginica

And you can adjust vertical lines, too.

    vlines(z,type=0)  # No vertical lines

Table 1. Top 10 and Last 10 Data from iris
| Top 10 |  | Last 10
| Sepal.Length | Petal.Length | Species |  | Sepal.Length | Petal.Length | Species
--- | --- | --- | --- | --- | --- | --- | ---
Top 1-3 |  |  |  |  |  |  |
1 | 5.10 | setosa |  | 6.70 | 5.60 | virginica
2 | 4.90 | 1.40 | setosa |  | 6.90 | 5.10 | virginica
3 | 4.70 | 1.30 | setosa |  | 5.80 | 5.10 | virginica
Top 4-5 |  |  |  |  |  |  |
4 | 4.60 | 1.50 | setosa |  | 6.80 | 5.90 | virginica
5 | 5.00 | 1.40 | setosa |  | 6.70 | 5.70 | virginica
6 | 5.40 | 1.70 | setosa |  | 6.70 | 5.20 | virginica
Top 7-10 |  |  |  |  |  |
7 | 4.60 | 1.40 | setosa |  | 6.30 | 5.00
8 | 5.00 | 1.50 | setosa |  | 6.50 | 5.20 | virginica
9 | 4.40 | 1.40 | setosa |  | 6.20 | 5.40 | virginica
10 | 4.90 | 1.50 | setosa |  | 5.90 | 5.10 | virginica

    vlines(z,type=1)  # Vertical lines for all column

Table 1. Top 10 and Last 10 Data from iris
| Top 10 | Last 10
| Sepal.Length | Petal.Length | Species | Sepal.Length | Petal.Length | Species
--- | --- | --- | --- | --- | --- | ---
Top 1-3 |  |  |  |  |  |
1 | 5.10 | setosa | 6.70 | 5.60 | virginica
2 | 4.90 | 1.40 | setosa | 6.90 | 5.10 | virginica
3 | 4.70 | 1.30 | setosa | 5.80 | 5.10 | virginica
Top 4-5 |  |  |  |  |  |
4 | 4.60 | 1.50 | setosa | 6.80 | 5.90 | virginica
5 | 5.00 | 1.40 | setosa | 6.70 | 5.70 | virginica
6 | 5.40 | 1.70 | setosa | 6.70 | 5.20 | virginica
Top 7-10 |  |  |  |  |
7 | 4.60 | 1.40 | setosa | 6.30 | 5.00
8 | 5.00 | 1.50 | setosa | 6.50 | 5.20 | virginica
9 | 4.40 | 1.40 | setosa | 6.20 | 5.40 | virginica
10 | 4.90 | 1.50 | setosa | 5.90 | 5.10 | virginica

# Basic Use

Package “ztable” consist of one function: ztable. It’s main function is creating zebra zebra striping tables(tables with alternating row colors) in both Latex and html formats easily from mainly data.frame or an R object such as matrix, lm, aov, anova, glm and coxph objects. It is fully customizable and you can get similar tables in both latex and html format without changing source. The default output is Rstudio::viewer, but you can get html format by adding just one sentence.

    options(ztable.type="html")

It’s usage is somewhat similar to xtable, but very simple.

## data.frame

### Basic Use

It’s use is very simple. Just use ‘ztable()’ function. You can get the zebra stripig table by set the parameter zebra=1 (default value is NULL)

    require(ztable)
    options(ztable.type="html")
    options(ztable.zebra=1)
    options(ztable.zebra.color="platinum")
    options(ztable.colnames.bold=TRUE)
    ztable(head(mtcars))

| mpg | cyl | disp | hp | drat | wt | qsec | vs | am | gear | carb
--- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | ---
Mazda RX4 | 21.00 | 6.00 | 160.00 | 110.00 | 3.90 | 2.62 | 16.46 | 0.00 | 1.00 | 4.00 | 4.00
Mazda RX4 Wag | 21.00 | 6.00 | 160.00 | 110.00 | 3.90 | 2.88 | 17.02 | 0.00 | 1.00 | 4.00 | 4.00
Datsun 710 | 22.80 | 4.00 | 108.00 | 93.00 | 3.85 | 2.32 | 18.61 | 1.00 | 1.00 | 4.00 | 1.00
Hornet 4 Drive | 21.40 | 6.00 | 258.00 | 110.00 | 3.08 | 3.21 | 19.44 | 1.00 | 0.00 | 3.00 | 1.00
Hornet Sportabout | 18.70 | 8.00 | 360.00 | 175.00 | 3.15 | 3.44 | 17.02 | 0.00 | 0.00 | 3.00 | 2.00
Valiant | 18.10 | 6.00 | 225.00 | 105.00 | 2.76 | 3.46 | 20.22 | 1.00 | 0.00 | 3.00 | 1.00

### Tailoring zebra striping

You can get non-zebra table by change parameter zebra=NULL or change zebra striping on even rows by zebra=2.

    ztable(head(mtcars),zebra=NULL,size=3,
           caption="Table 1. Non-zebra Table with small size")

Table 1. Non-zebra Table with small size
| mpg | cyl | disp | hp | drat | wt | qsec | vs | am | gear | carb
--- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | ---
Mazda RX4 | 21.00 | 6.00 | 160.00 | 110.00 | 3.90 | 2.62 | 16.46 | 0.00 | 1.00 | 4.00 | 4.00
Mazda RX4 Wag | 21.00 | 6.00 | 160.00 | 110.00 | 3.90 | 2.88 | 17.02 | 0.00 | 1.00 | 4.00 | 4.00
Datsun 710 | 22.80 | 4.00 | 108.00 | 93.00 | 3.85 | 2.32 | 18.61 | 1.00 | 1.00 | 4.00 | 1.00
Hornet 4 Drive | 21.40 | 6.00 | 258.00 | 110.00 | 3.08 | 3.21 | 19.44 | 1.00 | 0.00 | 3.00 | 1.00
Hornet Sportabout | 18.70 | 8.00 | 360.00 | 175.00 | 3.15 | 3.44 | 17.02 | 0.00 | 0.00 | 3.00 | 2.00
Valiant | 18.10 | 6.00 | 225.00 | 105.00 | 2.76 | 3.46 | 20.22 | 1.00 | 0.00 | 3.00 | 1.00

### Customize the caption and the font size

You can change the position of table by using parameter position. You can use “r” for right position, “l” for left position and “c” for center position(default). You can change the color of zebra striping by change the parameter zebra.color. You can also change the size of font from 1 to 10(default is 5). You can change the caption.placement(“top” or “bottom”) and caption.position(“c” for center / “r” for right/ “l” for left).

    ztable(head(mtcars[c(1:7)]),zebra=2,zebra.color="lightcyan",size=7,
           caption="Table 2. Left-sided caption at botom with large font",
           caption.placement="bottom",caption.position="l")

Table 2. Left-sided caption at botom with large font
| mpg | cyl | disp | hp | drat | wt | qsec
--- | --- | --- | --- | --- | --- | --- | ---
Mazda RX4 | 21.00 | 6.00 | 160.00 | 110.00 | 3.90 | 2.62 | 16.46
Mazda RX4 Wag | 21.00 | 6.00 | 160.00 | 110.00 | 3.90 | 2.88 | 17.02
Datsun 710 | 22.80 | 4.00 | 108.00 | 93.00 | 3.85 | 2.32 | 18.61
Hornet 4 Drive | 21.40 | 6.00 | 258.00 | 110.00 | 3.08 | 3.21 | 19.44
Hornet Sportabout | 18.70 | 8.00 | 360.00 | 175.00 | 3.15 | 3.44 | 17.02
Valiant | 18.10 | 6.00 | 225.00 | 105.00 | 2.76 | 3.46 | 20.22

## aov object

‘ztable()’ can be used for ‘aov’ object. When used for ‘aov’ object, the function call is added as footer to the table. The parameter ‘show.footer’ can be used whether or not include footer in the table. Dafault value is TRUE.

    out <- aov(mpg ~ ., data=mtcars)
    ztable(out)

| Df | Sum Sq | Mean Sq | F value | Pr(>F)
--- | --- | --- | --- | --- | ---
cyl | 1 | 817.71 | 817.71 | 116.42 | < 0.0001
disp | 1 | 37.59 | 37.59 | 5.35 | 0.0309
hp | 1 | 9.37 | 9.37 | 1.33 | 0.2610
drat | 1 | 16.47 | 16.47 | 2.34 | 0.1406
wt | 1 | 77.48 | 77.48 | 11.03 | 0.0032
qsec | 1 | 3.95 | 3.95 | 0.56 | 0.4617
vs | 1 | 0.13 | 0.13 | 0.02 | 0.8932
am | 1 | 14.47 | 14.47 | 2.06 | 0.1659
gear | 1 | 0.97 | 0.97 | 0.14 | 0.7137
carb | 1 | 0.41 | 0.41 | 0.06 | 0.8122
Residuals | 21 | 147.49 | 7.02 |  |
Call: aov(formula = mpg ~ ., data = mtcars)

## Linear model : ‘lm’ object

‘ztable()’ can be used for ‘lm’ object. When used for ‘lm’ object, the function call is added as footer to the table, too.

    fit <- lm(mpg ~ cyl + disp + wt + drat + am, data=mtcars)
    ztable(fit)

| Estimate | Std. Error | t value | Pr(>|t|)
--- | --- | --- | --- | ---
(Intercept) | 41.2964 | 7.5384 | 5.48 | < 0.0001
cyl | -1.7940 | 0.6505 | -2.76 | 0.0105
disp | 0.0074 | 0.0123 | 0.60 | 0.5546
wt | -3.5870 | 1.2105 | -2.96 | 0.0064
drat | -0.0936 | 1.5488 | -0.06 | 0.9523
am | 0.1730 | 1.5300 | 0.11 | 0.9109
Call: lm(formula = mpg ~ cyl + disp + wt + drat + am, data = mtcars)

## Analysis of Variance Table : ‘anova’ object

‘ztable()’ can be used for ‘anova’ object to show the anova table. When used for ‘anova’ object, headings of anova are added as headings to the table. The parameter ‘show.footer’ can be used whether or not include footer in the table. Dafault value is TRUE.

    a=anova(fit)
    ztable(a)

Analysis of Variance Table
Response: mpg
| Df | Sum Sq | Mean Sq | F value | Pr(>F)
--- | --- | --- | --- | --- | ---
cyl | 1 | 817.71 | 817.71 | 112.85 | < 0.0001
disp | 1 | 37.59 | 37.59 | 5.19 | 0.0312
wt | 1 | 82.25 | 82.25 | 11.35 | 0.0024
drat | 1 | 0.00 | 0.00 | 0.00 | 0.9939
am | 1 | 0.09 | 0.09 | 0.01 | 0.9109
Residuals | 26 | 188.40 | 7.25 |  |

This is examples of another ‘anova’ object. The models in this anova tables showed as table headings. You can decide whether or not include the headings in the tableby using parameter ‘show.heading’(default: TRUE).

    fit2 <- lm(mpg ~ cyl+wt, data=mtcars)
    b=anova(fit2,fit)
    ztable(b)

Analysis of Variance Table
Model 1: mpg ~ cyl + wt
Model 2: mpg ~ cyl + disp + wt + drat + am
| Res.Df | RSS | Df | Sum of Sq | F | Pr(>F)
--- | --- | --- | --- | --- | --- | ---
1 | 29.0 | 191.17 |  |  |  |
2 | 26.0 | 188.40 | 3.0 | 2.77 | 0.13 | 0.9429

    ztable(b,show.heading=FALSE)

| Res.Df | RSS | Df | Sum of Sq | F | Pr(>F)
--- | --- | --- | --- | --- | --- | ---
1 | 29.0 | 191.17 |  |  |  |
2 | 26.0 | 188.40 | 3.0 | 2.77 | 0.13 | 0.9429

## Generalized linear model ; ‘glm’ object

‘ztable()’ can be used for ‘glm’(generalized linear model) object. In this time, ‘ztable()’ shows the odds ratio(OR) and 95% confidence interval as well as atandard R output.

    require(survival)

    ## Loading required package: survival

    data(colon)
    attach(colon)
    out <- glm(status ~ rx+obstruct+adhere+nodes+extent, data=colon, family=binomial)
    ztable(out)

| Estimate | Std. Error | z value | Pr(>|z|) | OR | lcl | ucl
--- | --- | --- | --- | --- | --- | --- | ---
(Intercept) | -2.3642 | 0.3426 | -6.90 | < 0.0001 | 0.09 | 0.05 | 0.18
rxLev | -0.0712 | 0.1203 | -0.59 | 0.5538 | 0.93 | 0.74 | 1.18
rxLev+5FU | -0.6135 | 0.1231 | -4.98 | < 0.0001 | 0.54 | 0.43 | 0.69
obstruct | 0.2320 | 0.1251 | 1.85 | 0.0636 | 1.26 | 0.99 | 1.61
adhere | 0.4164 | 0.1429 | 2.91 | 0.0036 | 1.52 | 1.15 | 2.01
nodes | 0.1845 | 0.0183 | 10.06 | < 0.0001 | 1.20 | 1.16 | 1.25
extent | 0.6238 | 0.1142 | 5.46 | < 0.0001 | 1.87 | 1.49 | 2.33
Call: glm(formula = status ~ rx + obstruct + adhere + nodes + extent, family = binomial, data = colon)

Again, ‘ztable()’ also shows the anova table of this model.

    anova(out)

Analysis of Deviance Table

Model: binomial, link: logit

Response: status

Terms added sequentially (first to last)

         Df Deviance Resid. Df Resid. Dev

NULL 1821 2525.4 rx 2 34.841 1819 2490.6 obstruct 1 3.661 1818 2486.9 adhere 1 11.737 1817 2475.2 nodes 1 145.012 1816 2330.2 extent 1 32.594 1815 2297.6

    ztable(anova(out))

Analysis of Deviance Table
Model: binomial, link: logit
Response: status
Terms added sequentially (first to last)
| Df | Deviance | Resid. Df | Resid. Dev
--- | --- | --- | --- | ---
NULL |  |  | 1821 | 2525.40
rx | 2 | 34.84 | 1819 | 2490.56
obstruct | 1 | 3.66 | 1818 | 2486.90
adhere | 1 | 11.74 | 1817 | 2475.16
nodes | 1 | 145.01 | 1816 | 2330.15
extent | 1 | 32.59 | 1815 | 2297.55

## More ‘aov’ object

    op <- options(contrasts = c("contr.helmert", "contr.poly"))
    npk.aov <- aov(yield ~ block + N*P*K, npk)
    ztable(npk.aov,zebra=1)

| Df | Sum Sq | Mean Sq | F value | Pr(>F)
--- | --- | --- | --- | --- | ---
block | 5 | 343.29 | 68.66 | 4.45 | 0.0159
N | 1 | 189.28 | 189.28 | 12.26 | 0.0044
P | 1 | 8.40 | 8.40 | 0.54 | 0.4749
K | 1 | 95.20 | 95.20 | 6.17 | 0.0288
N:P | 1 | 21.28 | 21.28 | 1.38 | 0.2632
N:K | 1 | 33.14 | 33.14 | 2.15 | 0.1686
P:K | 1 | 0.48 | 0.48 | 0.03 | 0.8628
Residuals | 12 | 185.29 | 15.44 |  |
Call: aov(formula = yield ~ block + N * P * K, data = npk)

## More ‘lm’ object

    ctl <- c(4.17,5.58,5.18,6.11,4.50,4.61,5.17,4.53,5.33,5.14)
    trt <- c(4.81,4.17,4.41,3.59,5.87,3.83,6.03,4.89,4.32,4.69)
    group <- gl(2, 10, 20, labels = c("Ctl","Trt"))
    weight <- c(ctl, trt)
    lm.D9 <- lm(weight ~ group)
    ztable(lm.D9)

| Estimate | Std. Error | t value | Pr(>|t|)
--- | --- | --- | --- | ---
(Intercept) | 4.8465 | 0.1557 | 31.12 | < 0.0001
group1 | -0.1855 | 0.1557 | -1.19 | 0.2490
Call: lm(formula = weight ~ group)

    ztable(anova(lm.D9),align="|c|rrrr|r|")

Analysis of Variance Table
Response: weight
| Df | Sum Sq | Mean Sq | F value | Pr(>F)
--- | --- | --- | --- | --- | ---
group | 1 | 0.69 | 0.69 | 1.42 | 0.2490
Residuals | 18 | 8.73 | 0.48 |  |

## More ‘glm’ object

    counts <- c(18,17,15,20,10,20,25,13,12)
    outcome <- gl(3,1,9)
    treatment <- gl(3,3)
    d.AD <- data.frame(treatment, outcome, counts)
    glm.D93 <- glm(counts ~ outcome + treatment, family = poisson())
    ztable(glm.D93)

| Estimate | Std. Error | z value | Pr(>|z|) | OR | lcl | ucl
--- | --- | --- | --- | --- | --- | --- | ---
(Intercept) | 2.7954 | 0.0831 | 33.64 | < 0.0001 | 16.37 | 13.91 | 19.27
outcome1 | -0.2271 | 0.1011 | -2.25 | 0.0246 | 0.80 | 0.65 | 0.97
outcome2 | -0.0220 | 0.0592 | -0.37 | 0.7106 | 0.98 | 0.87 | 1.10
treatment1 | -0.0000 | 0.1000 | -0.00 | 1.0000 | 1.00 | 0.82 | 1.22
treatment2 | -0.0000 | 0.0577 | -0.00 | 1.0000 | 1.00 | 0.89 | 1.12
Call: glm(formula = counts ~ outcome + treatment, family = poisson())

## Principal Components Analysis : ‘prcomp’ object

‘ztable()’ can be used in principal components analysis. Followings are examples of ztable() of ‘prcomp’ object.

    data(USArrests)
    pr1 <- prcomp(USArrests)
    ztable(pr1)

Rotation:
| PC1 | PC2 | PC3 | PC4
--- | --- | --- | --- | ---
Murder | 0.0417 | -0.0448 | 0.0799 | -0.9949
Assault | 0.9952 | -0.0588 | -0.0676 | 0.0389
UrbanPop | 0.0463 | 0.9769 | -0.2005 | -0.0582
Rape | 0.0752 | 0.2007 | 0.9741 | 0.0723

    ztable(summary(pr1))

Importance of components:
| PC1 | PC2 | PC3 | PC4
--- | --- | --- | --- | ---
Standard deviation | 83.7324 | 14.2124 | 6.4894 | 2.4828
Proportion of Variance | 0.9655 | 0.0278 | 0.0058 | 0.0008
Cumulative Proportion | 0.9655 | 0.9933 | 0.9991 | 1.0000

## Survival Analysis : ‘coxph’ object

‘ztable()’ can be used in survival analysis. When used for Cox proportional hazard model, ‘ztable()’ showed the hazard ratio and 95% confidence interval ready for publication to medical journal.

    colon$TS = Surv(time,status==1)
    out=coxph(TS~rx+obstruct+adhere+differ+extent+surg+node4,data=colon)
    ztable(out)

| HR | lcl | ucl | se(coef) | z | Pr(>|z|)
--- | --- | --- | --- | --- | --- | ---
rx1 | 0.999 | 0.925 | 1.079 | 0.039 | -0.030 | 0.9764
rx2 | 0.871 | 0.829 | 0.915 | 0.025 | -5.464 | < 0.0001
obstruct | 1.267 | 1.079 | 1.489 | 0.082 | 2.885 | 0.0039
adhere | 1.181 | 0.991 | 1.409 | 0.090 | 1.856 | 0.0634
differ | 1.219 | 1.067 | 1.394 | 0.068 | 2.906 | 0.0037
extent | 1.523 | 1.298 | 1.787 | 0.082 | 5.152 | < 0.0001
surg | 1.274 | 1.104 | 1.469 | 0.073 | 3.319 | 0.0009
node4 | 2.359 | 2.059 | 2.702 | 0.069 | 12.383 | < 0.0001
Call: coxph(formula = TS ~ rx + obstruct + adhere + differ + extent + surg + node4, data = colon)

## Nonlinear Least Squares: ‘nls’ obbject

‘ztable()’ can be used to determine the nonlinear (weighted) least-squares estimates of the parameters of a nonlinear model. Followings are examples of ztable() of ‘nls’ object.

    require(graphics)

    DNase1 <- subset(DNase, Run == 1)

    ## using a selfStart model
    fm1DNase1 <- nls(density ~ SSlogis(log(conc), Asym, xmid, scal),DNase1)
    summary(fm1DNase1)

    Formula: density ~ SSlogis(log(conc), Asym, xmid, scal)

    Parameters:
         Estimate Std. Error t value Pr(>|t|)
    Asym  2.34518    0.07815   30.01 2.17e-13 ***
    xmid  1.48309    0.08135   18.23 1.22e-10 ***
    scal  1.04146    0.03227   32.27 8.51e-14 ***
    ---
    Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

    Residual standard error: 0.01919 on 13 degrees of freedom

    Number of iterations to convergence: 0
    Achieved convergence tolerance: 8.283e-06

    ztable(fm1DNase1)

Nonlinear regression model
model: density ~ SSlogis(log(conc), Asym, xmid, scal)
data: DNase1
| Estimate | Std. Error | t value | Pr(>|t|)
--- | --- | --- | --- | ---
Asym | 2.3452 | 0.0782 | 30.01 | < 0.0001
xmid | 1.4831 | 0.0814 | 18.23 | < 0.0001
scal | 1.0415 | 0.0323 | 32.27 | < 0.0001

## Maximum-likelihood Fitting of Univariate Distributions

‘ztable()’ can be used in maximum-likelihood fitting of univariate distributions. Followings are examples of ztable() of ‘fitdistr’ object.

    require(MASS)

    ## Loading required package: MASS

    set.seed(123)
    x <- rgamma(100, shape = 5, rate = 0.1)
    a=fitdistr(x, "gamma")
    ztable(a)

| shape | rate
--- | --- | ---
estimate | 6.487 | 0.137
sd | 0.895 | 0.020
N=100, The log-likelihood=-429.18

    x3 <- rweibull(100, shape = 4, scale = 100)
    b=fitdistr(x3, "weibull")
    ztable(b)

| shape | scale
--- | --- | ---
estimate | 3.855 | 102.462
sd | 0.305 | 2.794
N=100, The log-likelihood=-471.68

## Customize the zebra striping colors

If you wanted to use several colors for zebra striping, you can set the parameter ‘zebra’ to zero(e.g. zebra=0) and set the ‘zebra.color’ parameter with vector of your favorite colors. Your favorite colors are used to zebra striping. For your convienience, ten colors are predifned for this purpose. The predefined colors are: c(“peach”,“peach-orange”,“peachpuff”,“peach-yellow”,“pear”,“pearl”,“peridot”,“periwinkle”,“pastelred”, “pastelgray”).

    ztable(head(mtcars,15),zebra=0,zebra.color=NULL)

| mpg | cyl | disp | hp | drat | wt | qsec | vs | am | gear | carb
--- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | ---
Mazda RX4 | 21.00 | 6.00 | 160.00 | 110.00 | 3.90 | 2.62 | 16.46 | 0.00 | 1.00 | 4.00 | 4.00
Mazda RX4 Wag | 21.00 | 6.00 | 160.00 | 110.00 | 3.90 | 2.88 | 17.02 | 0.00 | 1.00 | 4.00 | 4.00
Datsun 710 | 22.80 | 4.00 | 108.00 | 93.00 | 3.85 | 2.32 | 18.61 | 1.00 | 1.00 | 4.00 | 1.00
Hornet 4 Drive | 21.40 | 6.00 | 258.00 | 110.00 | 3.08 | 3.21 | 19.44 | 1.00 | 0.00 | 3.00 | 1.00
Hornet Sportabout | 18.70 | 8.00 | 360.00 | 175.00 | 3.15 | 3.44 | 17.02 | 0.00 | 0.00 | 3.00 | 2.00
Valiant | 18.10 | 6.00 | 225.00 | 105.00 | 2.76 | 3.46 | 20.22 | 1.00 | 0.00 | 3.00 | 1.00
Duster 360 | 14.30 | 8.00 | 360.00 | 245.00 | 3.21 | 3.57 | 15.84 | 0.00 | 0.00 | 3.00 | 4.00
Merc 240D | 24.40 | 4.00 | 146.70 | 62.00 | 3.69 | 3.19 | 20.00 | 1.00 | 0.00 | 4.00 | 2.00
Merc 230 | 22.80 | 4.00 | 140.80 | 95.00 | 3.92 | 3.15 | 22.90 | 1.00 | 0.00 | 4.00 | 2.00
Merc 280 | 19.20 | 6.00 | 167.60 | 123.00 | 3.92 | 3.44 | 18.30 | 1.00 | 0.00 | 4.00 | 4.00
Merc 280C | 17.80 | 6.00 | 167.60 | 123.00 | 3.92 | 3.44 | 18.90 | 1.00 | 0.00 | 4.00 | 4.00
Merc 450SE | 16.40 | 8.00 | 275.80 | 180.00 | 3.07 | 4.07 | 17.40 | 0.00 | 0.00 | 3.00 | 3.00
Merc 450SL | 17.30 | 8.00 | 275.80 | 180.00 | 3.07 | 3.73 | 17.60 | 0.00 | 0.00 | 3.00 | 3.00
Merc 450SLC | 15.20 | 8.00 | 275.80 | 180.00 | 3.07 | 3.78 | 18.00 | 0.00 | 0.00 | 3.00 | 3.00
Cadillac Fleetwood | 10.40 | 8.00 | 472.00 | 205.00 | 2.93 | 5.25 | 17.98 | 0.00 | 0.00 | 3.00 | 4.00

The color names used for this purpose are predefined in the data ‘zcolors’ included in ‘ztable’ package. Please type ‘?zcolors’ in R console for help file or just type ‘zcolors’. You can see 749 color names defined in data ‘zcolors’.

## Vertical striping

If you wanted to vertical striping table, you can get it by set the parameter zebra.type 2. You can change the ztables parameters when printing.

    z1=ztable(head(iris),zebra=2)
    z1

| Sepal.Length | Sepal.Width | Petal.Length | Petal.Width | Species
--- | --- | --- | --- | --- | ---
1 | 5.10 | 3.50 | 1.40 | 0.20 | setosa
2 | 4.90 | 3.00 | 1.40 | 0.20 | setosa
3 | 4.70 | 3.20 | 1.30 | 0.20 | setosa
4 | 4.60 | 3.10 | 1.50 | 0.20 | setosa
5 | 5.00 | 3.60 | 1.40 | 0.20 | setosa
6 | 5.40 | 3.90 | 1.70 | 0.40 | setosa

    print(z1,zebra.type=2)

| Sepal.Length | Sepal.Width | Petal.Length | Petal.Width | Species
--- | --- | --- | --- | --- | ---
1 | 5.10 | 3.50 | 1.40 | 0.20 | setosa
2 | 4.90 | 3.00 | 1.40 | 0.20 | setosa
3 | 4.70 | 3.20 | 1.30 | 0.20 | setosa
4 | 4.60 | 3.10 | 1.50 | 0.20 | setosa
5 | 5.00 | 3.60 | 1.40 | 0.20 | setosa
6 | 5.40 | 3.90 | 1.70 | 0.40 | setosa

    print(z1,zebra=1,zebra.type=2,zebra.colnames=TRUE)

| Sepal.Length | Sepal.Width | Petal.Length | Petal.Width | Species
--- | --- | --- | --- | --- | ---
1 | 5.10 | 3.50 | 1.40 | 0.20 | setosa
2 | 4.90 | 3.00 | 1.40 | 0.20 | setosa
3 | 4.70 | 3.20 | 1.30 | 0.20 | setosa
4 | 4.60 | 3.10 | 1.50 | 0.20 | setosa
5 | 5.00 | 3.60 | 1.40 | 0.20 | setosa
6 | 5.40 | 3.90 | 1.70 | 0.40 | setosa

## More tailoring zebra striping

You can update parameters of ztable with ‘update_ztable’ function.

    options(ztable.zebra.color=NULL)
    (z1=ztable(head(iris),zebra=0,zebra.type=2))

| Sepal.Length | Sepal.Width | Petal.Length | Petal.Width | Species
--- | --- | --- | --- | --- | ---
1 | 5.10 | 3.50 | 1.40 | 0.20 | setosa
2 | 4.90 | 3.00 | 1.40 | 0.20 | setosa
3 | 4.70 | 3.20 | 1.30 | 0.20 | setosa
4 | 4.60 | 3.10 | 1.50 | 0.20 | setosa
5 | 5.00 | 3.60 | 1.40 | 0.20 | setosa
6 | 5.40 | 3.90 | 1.70 | 0.40 | setosa

You can change the background color of colnames rows by setting zebra.colnames=TRUE.

    update_ztable(z1,colnames.bold=TRUE,zebra.colnames=TRUE)

| Sepal.Length | Sepal.Width | Petal.Length | Petal.Width | Species
--- | --- | --- | --- | --- | ---
1 | 5.10 | 3.50 | 1.40 | 0.20 | setosa
2 | 4.90 | 3.00 | 1.40 | 0.20 | setosa
3 | 4.70 | 3.20 | 1.30 | 0.20 | setosa
4 | 4.60 | 3.10 | 1.50 | 0.20 | setosa
5 | 5.00 | 3.60 | 1.40 | 0.20 | setosa
6 | 5.40 | 3.90 | 1.70 | 0.40 | setosa

You can customize the striping when printing.

    print(z1,zebra.color=c(rep("white",5),"peach"),zebra.colnames=TRUE)

| Sepal.Length | Sepal.Width | Petal.Length | Petal.Width | Species
--- | --- | --- | --- | --- | ---
1 | 5.10 | 3.50 | 1.40 | 0.20 | setosa
2 | 4.90 | 3.00 | 1.40 | 0.20 | setosa
3 | 4.70 | 3.20 | 1.30 | 0.20 | setosa
4 | 4.60 | 3.10 | 1.50 | 0.20 | setosa
5 | 5.00 | 3.60 | 1.40 | 0.20 | setosa
6 | 5.40 | 3.90 | 1.70 | 0.40 | setosa

## Change the background color of all cells

You can change the background color of all cells by setting the zebra.type=0.

    ztable(head(iris),zebra=0,zebra.type=0)

| Sepal.Length | Sepal.Width | Petal.Length | Petal.Width | Species
--- | --- | --- | --- | --- | ---
1 | 5.10 | 3.50 | 1.40 | 0.20 | setosa
2 | 4.90 | 3.00 | 1.40 | 0.20 | setosa
3 | 4.70 | 3.20 | 1.30 | 0.20 | setosa
4 | 4.60 | 3.10 | 1.50 | 0.20 | setosa
5 | 5.00 | 3.60 | 1.40 | 0.20 | setosa
6 | 5.40 | 3.90 | 1.70 | 0.40 | setosa

    ztable(head(iris),zebra=0,zebra.type=0,zebra.color=zcolors$name,zebra.colnames=TRUE)

| Sepal.Length | Sepal.Width | Petal.Length | Petal.Width | Species
--- | --- | --- | --- | --- | ---
1 | 5.10 | 3.50 | 1.40 | 0.20 | setosa
2 | 4.90 | 3.00 | 1.40 | 0.20 | setosa
3 | 4.70 | 3.20 | 1.30 | 0.20 | setosa
4 | 4.60 | 3.10 | 1.50 | 0.20 | setosa
5 | 5.00 | 3.60 | 1.40 | 0.20 | setosa
6 | 5.40 | 3.90 | 1.70 | 0.40 | setosa

## Diagonal striping

You can make diagonal striping with use of zebra.color greater/lesser than column length by 1.

    ztable(head(iris),zebra=0,zebra.type=0,zebra.color=1:7,zebra.colnames=TRUE)

| Sepal.Length | Sepal.Width | Petal.Length | Petal.Width | Species
--- | --- | --- | --- | --- | ---
1 | 5.10 | 3.50 | 1.40 | 0.20 | setosa
2 | 4.90 | 3.00 | 1.40 | 0.20 | setosa
3 | 4.70 | 3.20 | 1.30 | 0.20 | setosa
4 | 4.60 | 3.10 | 1.50 | 0.20 | setosa
5 | 5.00 | 3.60 | 1.40 | 0.20 | setosa
6 | 5.40 | 3.90 | 1.70 | 0.40 | setosa

    ztable(head(mtcars[,1:9]),zebra=0,zebra.type=0,zebra.color=1:9,zebra.colnames=TRUE)

| mpg | cyl | disp | hp | drat | wt | qsec | vs | am
--- | --- | --- | --- | --- | --- | --- | --- | --- | ---
Mazda RX4 | 21.00 | 6.00 | 160.00 | 110.00 | 3.90 | 2.62 | 16.46 | 0.00 | 1.00
Mazda RX4 Wag | 21.00 | 6.00 | 160.00 | 110.00 | 3.90 | 2.88 | 17.02 | 0.00 | 1.00
Datsun 710 | 22.80 | 4.00 | 108.00 | 93.00 | 3.85 | 2.32 | 18.61 | 1.00 | 1.00
Hornet 4 Drive | 21.40 | 6.00 | 258.00 | 110.00 | 3.08 | 3.21 | 19.44 | 1.00 | 0.00
Hornet Sportabout | 18.70 | 8.00 | 360.00 | 175.00 | 3.15 | 3.44 | 17.02 | 0.00 | 0.00
Valiant | 18.10 | 6.00 | 225.00 | 105.00 | 2.76 | 3.46 | 20.22 | 1.00 | 0.00

## All background colors

This is demonstration of All background colors. All 749 colors are available in package ztable. Please type ?zcolors.

    mycolor=rep("white",6)
    for(i in 1:149){
        mycolor=c(mycolor,"white",zcolors$name[((i-1)*5+1):((i-1)*5+5)])
    }
    mycolor=c(mycolor,"white",zcolors$name[c(746:749,1)])
    a=c(zcolors$name[1:5])
    for(i in 2:149){
        a=rbind(a,zcolors$name[((i-1)*5+1):((i-1)*5+5)])
    }
    a=rbind(a,zcolors$name[c(746:749,1)])
    a=data.frame(a,stringsAsFactors=FALSE,row.names=NULL)
    ztable(a,zebra=0,zebra.type=0,zebra.color=mycolor,include.rownames=FALSE,
           include.colnames=FALSE,longtable=TRUE)

airforceblue | aliceblue | alizarin | almond | amaranth
amber | ambersaeece | americanrose | amethyst | anti-flashwhite
antiquebrass | antiquefuchsia | antiquewhite | ao | aoenglish
applegreen | apricot | aqua | aquamarine | armygreen
arsenic | arylideyellow | ashgrey | asparagus | atomictangerine
auburn | aureolin | aurometalsaurus | awesome | azurecolorwheel
azurewebazuremist | babyblue | babyblueeyes | babypink | ballblue
bananamania | bananayellow | battleshipgrey | bazaar | beaublue
beaver | beige | bisque | bistre | bittersweet
black | blanchedalmond | bleudefrance | blizzardblue | blond
blue | bluemunsell | bluencs | bluepigment | blueryb
bluebell | bluegray | blue-green | blue-violet | blush
bole | bondiblue | bostonuniversityred | brandeisblue | brass
brickred | brightcerulean | brightgreen | brightlavender | brightmaroon
brightpink | brightturquoise | brightube | brilliantlavender | brilliantrose
brinkpink | britishracinggreen | bronze | browntraditional | brownweb
bubblegum | bubbles | buff | bulgarianrose | burgundy
burlywood | burntorange | burntsienna | burntumber | byzantine
byzantium | cadet | cadetblue | cadetgrey | cadmiumgreen
cadmiumorange | cadmiumred | cadmiumyellow | calpolypomonagreen | cambridgeblue
camel | camouflagegreen | canaryyellow | candyapplered | candypink
capri | caputmortuum | cardinal | caribbeangreen | carmine
carminepink | carminered | carnationpink | carnelian | carolinablue
carrotorange | ceil | celadon | celestialblue | cerise
cerisepink | cerulean | ceruleanblue | chamoisee | champagne
charcoal | chartreusetraditional | chartreuseweb | cherryblossompink | chestnut
chocolatetraditional | chocolateweb | chromeyellow | cinereous | cinnabar
cinnamon | citrine | classicrose | cobalt | cocoabrown
columbiablue | coolblack | coolgrey | copper | copperrose
coquelicot | coral | coralpink | coralred | cordovan
corn | cornellred | cornflowerblue | cornsilk | cosmiclatte
cottoncandy | cream | crimson | crimsonglory | cyan
cyanprocess | daffodil | dandelion | darkblue | darkbrown
darkbyzantium | darkcandyapplered | darkcerulean | darkchampagne | darkchestnut
darkcoral | darkcyan | darkelectricblue | darkgoldenrod | darkgray
darkgreen | darkjunglegreen | darkkhaki | darklava | darklavender
darkmagenta | darkmidnightblue | darkolivegreen | darkorange | darkorchid
darkpastelblue | darkpastelgreen | darkpastelpurple | darkpastelred | darkpink
darkpowderblue | darkraspberry | darkred | darksalmon | darkscarlet
darkseagreen | darksienna | darkslateblue | darkslategray | darkspringgreen
darktan | darktangerine | darktaupe | darkterracotta | darkturquoise
darkviolet | dartmouthgreen | debianred | deepcarmine | deepcarminepink
deepcarrotorange | deepcerise | deepchampagne | deepchestnut | deepfuchsia
deepjunglegreen | deeplilac | deepmagenta | deeppeach | deeppink
deepsaffron | deepskyblue | denim | desert | desertsand
dimgray | dodgerblue | dogwoodrose | dollarbill | drab
dukeblue | earthyellow | ecru | eggplant | eggshell
egyptianblue | electricblue | electriccrimson | electriccyan | electricgreen
electricindigo | electriclavender | electriclime | electricpurple | electricultramarine
electricviolet | electricyellow | emerald | etonblue | fallow
falured | fandango | fashionfuchsia | fawn | feldgrau
ferngreen | ferrarired | fielddrab | firebrick | fireenginered
flame | flamingopink | flavescent | flax | floralwhite
fluorescentorange | fluorescentpink | fluorescentyellow | folly | forestgreentraditional
forestgreenweb | frenchbeige | frenchblue | frenchlilac | frenchrose
fuchsia | fuchsiapink | fulvous | fuzzywuzzy | gainsboro
gamboge | ghostwhite | ginger | glaucous | goldmetallic
goldwebgolden | goldenbrown | goldenpoppy | goldenyellow | goldenrod
grannysmithapple | gray | grayhtmlcssgray | grayx11gray | gray-asparagus
greencolorwheelx11green | greenhtmlcssgreen | greenmunsell | greenncs | greenpigment
greenryb | green-yellow | grullo | guppiegreen | halayaube
hanblue | hanpurple | hansayellow | harlequin | harvardcrimson
harvestgold | heartgold | heliotrope | hollywoodcerise | honeydew
hotmagenta | hotpink | huntergreen | iceberg | icterine
inchworm | indiagreen | indianred | indianyellow | indigodye
indigoweb | internationalkleinblue | internationalorange | iris | isabelline
islamicgreen | ivory | jade | jasper | jazzberryjam
jonquil | junebud | junglegreen | kellygreen | khakihtmlcsskhaki
khakix11lightkhaki | lasallegreen | languidlavender | lapislazuli | laserlemon
lava | lavenderfloral | lavenderweb | lavenderblue | lavenderblush
lavendergray | lavenderindigo | lavendermagenta | lavendermist | lavenderpink
lavenderpurple | lavenderrose | lawngreen | lemon | lemonchiffon
lightapricot | lightblue | lightbrown | lightcarminepink | lightcoral
lightcornflowerblue | lightcyan | lightfuchsiapink | lightgoldenrodyellow | lightgray
lightgreen | lightkhaki | lightmauve | lightpastelpurple | lightpink
lightsalmon | lightsalmonpink | lightseagreen | lightskyblue | lightslategray
lighttaupe | lightthulianpink | lightyellow | lilac | limecolorwheel
limewebx11green | limegreen | lincolngreen | linen | liver
lust | macaroniandcheese | magenta | magentadye | magentaprocess
magicmint | magnolia | mahogany | maize | majorelleblue
malachite | manatee | mangotango | maroonhtmlcss | maroonx11
mauve | mauvetaupe | mauvelous | mayablue | meatbrown
mediumaquamarine | mediumblue | mediumcandyapplered | mediumcarmine | mediumelectricblue
mediumjunglegreen | mediumlavendermagenta | mediumorchid | mediumpersianblue | mediumpurple
mediumred-violet | mediumseagreen | mediumslateblue | mediumspringbud | mediumspringgreen
mediumtaupe | mediumtealblue | mediumturquoise | mediumviolet-red | melon
midnightblue | midnightgreeneaglegreen | mikadoyellow | mint | mintcream
mintgreen | mistyrose | moccasin | modebeige | moonstoneblue
mordantred19 | mossgreen | mountainmeadow | mountbattenpink | mulberry
mustard | myrtle | msugreen | nadeshikopink | napiergreen
naplesyellow | navajowhite | navyblue | neoncarrot | neonfuchsia
neongreen | non-photoblue | oceanboatblue | ochre | officegreen
oldgold | oldlace | oldlavender | oldmauve | oldrose
olive | olivine | onyx | operamauve | orangecolorwheel
orangeryb | orangewebcolor | orangepeel | orange-red | orchid
otterbrown | outerspace | outrageousorange | oxfordblue | oucrimsonred
pakistangreen | palatinateblue | palatinatepurple | paleaqua | paleblue
palebrown | palecarmine | palecerulean | palechestnut | palecopper
palecornflowerblue | palegold | palegoldenrod | palegreen | palemagenta
palepink | paleplum | palered-violet | palerobineggblue | palesilver
palespringbud | paletaupe | paleviolet-red | pansypurple | papayawhip
parisgreen | pastelblue | pastelbrown | pastelgray | pastelgreen
pastelmagenta | pastelorange | pastelpink | pastelpurple | pastelred
pastelviolet | pastelyellow | patriarch | peach | peach-orange
peachpuff | peach-yellow | pear | pearl | peridot
periwinkle | persianblue | persiangreen | persianindigo | persianorange
peru | persianpink | persianplum | persianred | persianrose
persimmon | phlox | phthaloblue | phthalogreen | piggypink
pinegreen | pink | pink-orange | pinkpearl | pinksherbet
pistachio | platinum | plumtraditional | plumweb | portlandorange
powderblueweb | princetonorange | prune | prussianblue | psychedelicpurple
puce | pumpkin | purplehtmlcss | purplemunsell | purplex11
purpleheart | purplemountainmajesty | purplepizzazz | purpletaupe | radicalred
raspberry | raspberryglace | raspberrypink | raspberryrose | rawumber
razzledazzlerose | razzmatazz | red | redmunsell | redncs
redpigment | redryb | red-brown | red-violet | redwood
regalia | richblack | richbrilliantlavender | richcarmine | richelectricblue
richlavender | richlilac | richmaroon | riflegreen | robineggblue
rose | rosebonbon | roseebony | rosegold | rosemadder
rosepink | rosequartz | rosetaupe | rosevale | rosewood
rossocorsa | rosybrown | royalazure | royalbluetraditional | royalblueweb
royalfuchsia | royalpurple | ruby | ruddy | ruddybrown
ruddypink | rufous | russet | rust | sacramentostategreen
saddlebrown | safetyorangeblazeorange | saffron | salmon | salmonpink
sand | sanddune | sandstorm | sandybrown | sandytaupe
sangria | sapgreen | sapphire | satinsheengold | scarlet
schoolbusyellow | screamingreen | seagreen | sealbrown | seashell
selectiveyellow | sepia | shadow | shamrockgreen | shockingpink
sienna | silver | sinopia | skobeloff | skyblue
skymagenta | slateblue | slategray | smaltdarkpowderblue | smokeytopaz
smokyblack | snow | spirodiscoball | splashedwhite | springbud
springgreen | steelblue | stildegrainyellow | straw | sunglow
sunset | tan | tangelo | tangerine | tangerineyellow
taupe | taupegray | teagreen | tearoseorange | tearoserose
teal | tealblue | tealgreen | terracotta | thistle
thulianpink | ticklemepink | tiffanyblue | timberwolf | titaniumyellow
tomato | toolbox | tractorred | trolleygrey | tropicalrainforest
trueblue | tuftsblue | tumbleweed | turkishrose | turquoise
turquoiseblue | turquoisegreen | tuscanred | twilightlavender | tyrianpurple
uablue | uared | ube | uclablue | uclagold
ufogreen | ultramarine | ultramarineblue | ultrapink | umber
unitednationsblue | unmellowyellow | upforestgreen | upmaroon | upsdellred
urobilin | usccardinal | uscgold | utahcrimson | vanilla
vegasgold | venetianred | verdigris | vermilion | veronica
violet | violetcolorwheel | violetryb | violetweb | viridian
vividauburn | vividburgundy | vividcerise | vividtangerine | vividviolet
warmblack | wenge | wheat | white | whitesmoke
wildblueyonder | wildstrawberry | wildwatermelon | wisteria | xanadu
yaleblue | yellow | yellowmunsell | yellowncs | yellowprocess
yellowryb | yellow-green | zaffre | zinnwalditebrown | airforceblue

## Place two or more ztables or figures side by side

If you wanted to place two or more ztables or figures side by side, you can use function parallelTables(). Function parallelTables() takes three parameters. The first parameter width is a numeric vector specifies the width to which the tables or figures should be scaled. The second parameter is a list of ztable or names of valid figure. The 3rd parameter ‘type’ is the type of table to produce. Possible values for type are “latex” or “html”. Default value is “latex”. See the examples.

    z=ztable(head(mtcars[1:3]),tabular=TRUE,zebra.color="peach-orange")
    z1=ztable(head(iris[1:3]),tabular=TRUE,zebra=2)

    parallelTables(width=c(0.5,0.5),list(z,z1),type="html")

| mpg | cyl | disp
--- | --- | --- | ---
Mazda RX4 | 21.00 | 6.00 | 160.00
Mazda RX4 Wag | 21.00 | 6.00 | 160.00
Datsun 710 | 22.80 | 4.00 | 108.00
Hornet 4 Drive | 21.40 | 6.00 | 258.00
Hornet Sportabout | 18.70 | 8.00 | 360.00
Valiant | 18.10 | 6.00 | 225.00
| Sepal.Length | Sepal.Width | Petal.Length
--- | --- | --- | ---
1 | 5.10 | 3.50 | 1.40
2 | 4.90 | 3.00 | 1.40
3 | 4.70 | 3.20 | 1.30
4 | 4.60 | 3.10 | 1.50
5 | 5.00 | 3.60 | 1.40
6 | 5.40 | 3.90 | 1.70

    parallelTables(width=c(0.5,0.5),list(z,"figures/ztable3.png"),type="html")

| mpg | cyl | disp
--- | --- | --- | ---
Mazda RX4 | 21.00 | 6.00 | 160.00
Mazda RX4 Wag | 21.00 | 6.00 | 160.00
Datsun 710 | 22.80 | 4.00 | 108.00
Hornet 4 Drive | 21.40 | 6.00 | 258.00
Hornet Sportabout | 18.70 | 8.00 | 360.00
Valiant | 18.10 | 6.00 | 225.00

## mytable object from “moonBook” package

‘ztable()’ can be used for ‘mytable’ object made by “mytable” function from “moonBook” package.

    require(moonBook)
    res=mytable(Dx~.,data=acs)
    options(ztable.zebra=NULL)
    z=ztable(res)
    z

| NSTEMI | STEMI | Unstable Angina | p
--- | --- | --- | --- | ---
| (N=153) | (N=304) | (N=400)
age | 64.3 ± 12.3 | 62.1 ± 12.1 | 63.8 ± 11.0 | 0.073
sex |  |  |  | 0.012
Female | 50 (32.7%) | 84 (27.6%) | 153 (38.2%) |
Male | 103 (67.3%) | 220 (72.4%) | 247 (61.8%) |
cardiogenicShock |  |  |  | < 0.001
No | 149 (97.4%) | 256 (84.2%) | 400 (100.0%) |
Yes | 4 ( 2.6%) | 48 (15.8%) | 0 ( 0.0%) |
entry |  |  |  | 0.001
Femoral | 58 (37.9%) | 133 (43.8%) | 121 (30.2%) |
Radial | 95 (62.1%) | 171 (56.2%) | 279 (69.8%) |
EF | 55.0 ± 9.3 | 52.4 ± 9.5 | 59.2 ± 8.7 | < 0.001
height | 163.3 ± 8.2 | 165.1 ± 8.2 | 161.7 ± 9.7 | < 0.001
weight | 64.3 ± 10.2 | 65.7 ± 11.6 | 64.5 ± 11.6 | 0.361
BMI | 24.1 ± 3.2 | 24.0 ± 3.3 | 24.6 ± 3.4 | 0.064
obesity |  |  |  | 0.186
No | 106 (69.3%) | 209 (68.8%) | 252 (63.0%) |
Yes | 47 (30.7%) | 95 (31.2%) | 148 (37.0%) |
TC | 193.7 ± 53.6 | 183.2 ± 43.4 | 183.5 ± 48.3 | 0.057
LDLC | 126.1 ± 44.7 | 116.7 ± 39.5 | 112.9 ± 40.4 | 0.004
HDLC | 38.9 ± 11.9 | 38.5 ± 11.0 | 37.8 ± 10.9 | 0.501
TG | 130.1 ± 88.5 | 106.5 ± 72.0 | 137.4 ± 101.6 | < 0.001
DM |  |  |  | 0.209
No | 96 (62.7%) | 208 (68.4%) | 249 (62.2%) |
Yes | 57 (37.3%) | 96 (31.6%) | 151 (37.8%) |
HBP |  |  |  | 0.002
No | 62 (40.5%) | 150 (49.3%) | 144 (36.0%) |
Yes | 91 (59.5%) | 154 (50.7%) | 256 (64.0%) |
smoking |  |  |  | < 0.001
Ex-smoker | 42 (27.5%) | 66 (21.7%) | 96 (24.0%) |
Never | 50 (32.7%) | 97 (31.9%) | 185 (46.2%) |
Smoker | 61 (39.9%) | 141 (46.4%) | 119 (29.8%) |

    vlines(z,type="all")

| NSTEMI | STEMI | Unstable Angina | p
--- | --- | --- | --- | ---
| (N=153) | (N=304) | (N=400)
age | 64.3 ± 12.3 | 62.1 ± 12.1 | 63.8 ± 11.0 | 0.073
sex |  |  |  | 0.012
Female | 50 (32.7%) | 84 (27.6%) | 153 (38.2%) |
Male | 103 (67.3%) | 220 (72.4%) | 247 (61.8%) |
cardiogenicShock |  |  |  | < 0.001
No | 149 (97.4%) | 256 (84.2%) | 400 (100.0%) |
Yes | 4 ( 2.6%) | 48 (15.8%) | 0 ( 0.0%) |
entry |  |  |  | 0.001
Femoral | 58 (37.9%) | 133 (43.8%) | 121 (30.2%) |
Radial | 95 (62.1%) | 171 (56.2%) | 279 (69.8%) |
EF | 55.0 ± 9.3 | 52.4 ± 9.5 | 59.2 ± 8.7 | < 0.001
height | 163.3 ± 8.2 | 165.1 ± 8.2 | 161.7 ± 9.7 | < 0.001
weight | 64.3 ± 10.2 | 65.7 ± 11.6 | 64.5 ± 11.6 | 0.361
BMI | 24.1 ± 3.2 | 24.0 ± 3.3 | 24.6 ± 3.4 | 0.064
obesity |  |  |  | 0.186
No | 106 (69.3%) | 209 (68.8%) | 252 (63.0%) |
Yes | 47 (30.7%) | 95 (31.2%) | 148 (37.0%) |
TC | 193.7 ± 53.6 | 183.2 ± 43.4 | 183.5 ± 48.3 | 0.057
LDLC | 126.1 ± 44.7 | 116.7 ± 39.5 | 112.9 ± 40.4 | 0.004
HDLC | 38.9 ± 11.9 | 38.5 ± 11.0 | 37.8 ± 10.9 | 0.501
TG | 130.1 ± 88.5 | 106.5 ± 72.0 | 137.4 ± 101.6 | < 0.001
DM |  |  |  | 0.209
No | 96 (62.7%) | 208 (68.4%) | 249 (62.2%) |
Yes | 57 (37.3%) | 96 (31.6%) | 151 (37.8%) |
HBP |  |  |  | 0.002
No | 62 (40.5%) | 150 (49.3%) | 144 (36.0%) |
Yes | 91 (59.5%) | 154 (50.7%) | 256 (64.0%) |
smoking |  |  |  | < 0.001
Ex-smoker | 42 (27.5%) | 66 (21.7%) | 96 (24.0%) |
Never | 50 (32.7%) | 97 (31.9%) | 185 (46.2%) |
Smoker | 61 (39.9%) | 141 (46.4%) | 119 (29.8%) |

## cbind.mytable object

‘ztable()’ can be used for ‘cbind.mytable’ object made by “mytable” function from “moonBook” package.

    res1=mytable(sex+DM~.,data=acs)
    z=ztable(res1)
    z

Descriptive Statistics Stratified by ‘SEX’ and ‘DM’
|  | Male |  | Female
|  | No | Yes | p |  | No | Yes | p
--- | --- | --- | --- | --- | --- | --- | --- | ---
| (N=380) | (N=190) |  | (N=173) | (N=114)
age |  | 60.9 ± 11.5 | 60.1 ± 10.6 | 0.472 |  | 69.3 ± 11.4 | 67.8 ± 9.7 | 0.257
cardiogenicShock |  |  |  | 0.685 |  |  |  | 0.296
No |  | 355 (93.4%) | 175 (92.1%) |  |  | 168 (97.1%) | 107 (93.9%) |
Yes |  | 25 ( 6.6%) | 15 ( 7.9%) |  |  | 5 ( 2.9%) | 7 ( 6.1%) |
entry |  |  |  | 0.552 |  |  |  | 0.665
Femoral |  | 125 (32.9%) | 68 (35.8%) |  |  | 74 (42.8%) | 45 (39.5%) |
Radial |  | 255 (67.1%) | 122 (64.2%) |  |  | 99 (57.2%) | 69 (60.5%) |
Dx |  |  |  | 0.219 |  |  |  | 0.240
NSTEMI |  | 71 (18.7%) | 32 (16.8%) |  |  | 25 (14.5%) | 25 (21.9%) |
STEMI |  | 154 (40.5%) | 66 (34.7%) |  |  | 54 (31.2%) | 30 (26.3%) |
Unstable Angina |  | 155 (40.8%) | 92 (48.4%) |  |  | 94 (54.3%) | 59 (51.8%) |
EF |  | 56.5 ± 8.3 | 53.9 ± 11.0 | 0.007 |  | 56.0 ± 10.1 | 56.6 ± 10.0 | 0.655
height |  | 168.1 ± 5.8 | 167.5 ± 6.7 | 0.386 |  | 153.9 ± 6.5 | 153.6 ± 5.8 | 0.707
weight |  | 68.1 ± 10.4 | 69.8 ± 10.2 | 0.070 |  | 56.5 ± 8.7 | 58.4 ± 10.0 | 0.106
BMI |  | 24.0 ± 3.1 | 24.9 ± 3.5 | 0.005 |  | 23.8 ± 3.2 | 24.8 ± 4.0 | 0.046
obesity |  |  |  | 0.027 |  |  |  | 0.359
No |  | 261 (68.7%) | 112 (58.9%) |  |  | 121 (69.9%) | 73 (64.0%) |
Yes |  | 119 (31.3%) | 78 (41.1%) |  |  | 52 (30.1%) | 41 (36.0%) |
TC |  | 184.1 ± 46.7 | 181.8 ± 44.5 | 0.572 |  | 186.0 ± 43.1 | 193.3 ± 60.8 | 0.274
LDLC |  | 117.9 ± 41.8 | 112.1 ± 39.4 | 0.115 |  | 116.3 ± 35.2 | 119.8 ± 48.6 | 0.519
HDLC |  | 38.4 ± 11.4 | 36.8 ± 9.6 | 0.083 |  | 39.2 ± 10.9 | 38.8 ± 12.2 | 0.821
TG |  | 115.2 ± 72.2 | 153.4 ± 130.7 | < 0.001 |  | 114.2 ± 82.4 | 128.4 ± 65.5 | 0.112
HBP |  |  |  | < 0.001 |  |  |  | 0.356
No |  | 205 (53.9%) | 68 (35.8%) |  |  | 54 (31.2%) | 29 (25.4%) |
Yes |  | 175 (46.1%) | 122 (64.2%) |  |  | 119 (68.8%) | 85 (74.6%) |
smoking |  |  |  | 0.386 |  |  |  | 0.093
Ex-smoker |  | 101 (26.6%) | 54 (28.4%) |  |  | 34 (19.7%) | 15 (13.2%) |
Never |  | 77 (20.3%) | 46 (24.2%) |  |  | 118 (68.2%) | 91 (79.8%) |
Smoker |  | 202 (53.2%) | 90 (47.4%) |  |  | 21 (12.1%) | 8 ( 7.0%) |

    vlines(z,type="all")

Descriptive Statistics Stratified by ‘SEX’ and ‘DM’
| Male | Female
| No | Yes | p | No | Yes | p
--- | --- | --- | --- | --- | --- | ---
(N=380) | (N=190) | (N=173) | (N=114)
age | 60.9 ± 11.5 | 60.1 ± 10.6 | 0.472 | 69.3 ± 11.4 | 67.8 ± 9.7 | 0.257
cardiogenicShock |  |  | 0.685 |  |  | 0.296
No | 355 (93.4%) | 175 (92.1%) |  | 168 (97.1%) | 107 (93.9%) |
Yes | 25 ( 6.6%) | 15 ( 7.9%) |  | 5 ( 2.9%) | 7 ( 6.1%) |
entry |  |  | 0.552 |  |  | 0.665
Femoral | 125 (32.9%) | 68 (35.8%) |  | 74 (42.8%) | 45 (39.5%) |
Radial | 255 (67.1%) | 122 (64.2%) |  | 99 (57.2%) | 69 (60.5%) |
Dx |  |  | 0.219 |  |  | 0.240
NSTEMI | 71 (18.7%) | 32 (16.8%) |  | 25 (14.5%) | 25 (21.9%) |
STEMI | 154 (40.5%) | 66 (34.7%) |  | 54 (31.2%) | 30 (26.3%) |
Unstable Angina | 155 (40.8%) | 92 (48.4%) |  | 94 (54.3%) | 59 (51.8%) |
EF | 56.5 ± 8.3 | 53.9 ± 11.0 | 0.007 | 56.0 ± 10.1 | 56.6 ± 10.0 | 0.655
height | 168.1 ± 5.8 | 167.5 ± 6.7 | 0.386 | 153.9 ± 6.5 | 153.6 ± 5.8 | 0.707
weight | 68.1 ± 10.4 | 69.8 ± 10.2 | 0.070 | 56.5 ± 8.7 | 58.4 ± 10.0 | 0.106
BMI | 24.0 ± 3.1 | 24.9 ± 3.5 | 0.005 | 23.8 ± 3.2 | 24.8 ± 4.0 | 0.046
obesity |  |  | 0.027 |  |  | 0.359
No | 261 (68.7%) | 112 (58.9%) |  | 121 (69.9%) | 73 (64.0%) |
Yes | 119 (31.3%) | 78 (41.1%) |  | 52 (30.1%) | 41 (36.0%) |
TC | 184.1 ± 46.7 | 181.8 ± 44.5 | 0.572 | 186.0 ± 43.1 | 193.3 ± 60.8 | 0.274
LDLC | 117.9 ± 41.8 | 112.1 ± 39.4 | 0.115 | 116.3 ± 35.2 | 119.8 ± 48.6 | 0.519
HDLC | 38.4 ± 11.4 | 36.8 ± 9.6 | 0.083 | 39.2 ± 10.9 | 38.8 ± 12.2 | 0.821
TG | 115.2 ± 72.2 | 153.4 ± 130.7 | < 0.001 | 114.2 ± 82.4 | 128.4 ± 65.5 | 0.112
HBP |  |  | < 0.001 |  |  | 0.356
No | 205 (53.9%) | 68 (35.8%) |  | 54 (31.2%) | 29 (25.4%) |
Yes | 175 (46.1%) | 122 (64.2%) |  | 119 (68.8%) | 85 (74.6%) |
smoking |  |  | 0.386 |  |  | 0.093
Ex-smoker | 101 (26.6%) | 54 (28.4%) |  | 34 (19.7%) | 15 (13.2%) |
Never | 77 (20.3%) | 46 (24.2%) |  | 118 (68.2%) | 91 (79.8%) |
Smoker | 202 (53.2%) | 90 (47.4%) |  | 21 (12.1%) | 8 ( 7.0%) |

You can use all ztable related function in this table.

    z=addRowColor(z,c(13,16),"platinum")
    z=addColColor(z,c(5,8),"pink")
    z=addCellColor(z,rows=16,cols=c(5,8),bg="orange")
    z=addCellColor(z,rows=13,cols=5,bg="orange")
    z

Descriptive Statistics Stratified by ‘SEX’ and ‘DM’
|  | Male |  | Female
|  | No | Yes | p |  | No | Yes | p
--- | --- | --- | --- | --- | --- | --- | --- | ---
| (N=380) | (N=190) |  | (N=173) | (N=114)
age |  | 60.9 ± 11.5 | 60.1 ± 10.6 | 0.472 |  | 69.3 ± 11.4 | 67.8 ± 9.7 | 0.257
cardiogenicShock |  |  |  | 0.685 |  |  |  | 0.296
No |  | 355 (93.4%) | 175 (92.1%) |  |  | 168 (97.1%) | 107 (93.9%) |
Yes |  | 25 ( 6.6%) | 15 ( 7.9%) |  |  | 5 ( 2.9%) | 7 ( 6.1%) |
entry |  |  |  | 0.552 |  |  |  | 0.665
Femoral |  | 125 (32.9%) | 68 (35.8%) |  |  | 74 (42.8%) | 45 (39.5%) |
Radial |  | 255 (67.1%) | 122 (64.2%) |  |  | 99 (57.2%) | 69 (60.5%) |
Dx |  |  |  | 0.219 |  |  |  | 0.240
NSTEMI |  | 71 (18.7%) | 32 (16.8%) |  |  | 25 (14.5%) | 25 (21.9%) |
STEMI |  | 154 (40.5%) | 66 (34.7%) |  |  | 54 (31.2%) | 30 (26.3%) |
Unstable Angina |  | 155 (40.8%) | 92 (48.4%) |  |  | 94 (54.3%) | 59 (51.8%) |
EF |  | 56.5 ± 8.3 | 53.9 ± 11.0 | 0.007 |  | 56.0 ± 10.1 | 56.6 ± 10.0 | 0.655
height |  | 168.1 ± 5.8 | 167.5 ± 6.7 | 0.386 |  | 153.9 ± 6.5 | 153.6 ± 5.8 | 0.707
weight |  | 68.1 ± 10.4 | 69.8 ± 10.2 | 0.070 |  | 56.5 ± 8.7 | 58.4 ± 10.0 | 0.106
BMI |  | 24.0 ± 3.1 | 24.9 ± 3.5 | 0.005 |  | 23.8 ± 3.2 | 24.8 ± 4.0 | 0.046
obesity |  |  |  | 0.027 |  |  |  | 0.359
No |  | 261 (68.7%) | 112 (58.9%) |  |  | 121 (69.9%) | 73 (64.0%) |
Yes |  | 119 (31.3%) | 78 (41.1%) |  |  | 52 (30.1%) | 41 (36.0%) |
TC |  | 184.1 ± 46.7 | 181.8 ± 44.5 | 0.572 |  | 186.0 ± 43.1 | 193.3 ± 60.8 | 0.274
LDLC |  | 117.9 ± 41.8 | 112.1 ± 39.4 | 0.115 |  | 116.3 ± 35.2 | 119.8 ± 48.6 | 0.519
HDLC |  | 38.4 ± 11.4 | 36.8 ± 9.6 | 0.083 |  | 39.2 ± 10.9 | 38.8 ± 12.2 | 0.821
TG |  | 115.2 ± 72.2 | 153.4 ± 130.7 | < 0.001 |  | 114.2 ± 82.4 | 128.4 ± 65.5 | 0.112
HBP |  |  |  | < 0.001 |  |  |  | 0.356
No |  | 205 (53.9%) | 68 (35.8%) |  |  | 54 (31.2%) | 29 (25.4%) |
Yes |  | 175 (46.1%) | 122 (64.2%) |  |  | 119 (68.8%) | 85 (74.6%) |
smoking |  |  |  | 0.386 |  |  |  | 0.093
Ex-smoker |  | 101 (26.6%) | 54 (28.4%) |  |  | 34 (19.7%) | 15 (13.2%) |
Never |  | 77 (20.3%) | 46 (24.2%) |  |  | 118 (68.2%) | 91 (79.8%) |
Smoker |  | 202 (53.2%) | 90 (47.4%) |  |  | 21 (12.1%) | 8 ( 7.0%) |

You can use pipe from package “magrittr”

    require(magrittr)

    res1=mytable(sex+DM~.,data=acs)
    z=ztable(res1)
    z %>%
       addRowColor(c(13,16),"platinum") %>%
       addColColor(c(5,8),"pink") %>%
       addCellColor(rows=16,cols=c(5,8),bg="orange") %>%
       addCellColor(rows=13,cols=5,bg="orange") %>%
       print

Descriptive Statistics Stratified by ‘SEX’ and ‘DM’
|  | Male |  | Female
|  | No | Yes | p |  | No | Yes | p
--- | --- | --- | --- | --- | --- | --- | --- | ---
| (N=380) | (N=190) |  | (N=173) | (N=114)
age |  | 60.9 ± 11.5 | 60.1 ± 10.6 | 0.472 |  | 69.3 ± 11.4 | 67.8 ± 9.7 | 0.257
cardiogenicShock |  |  |  | 0.685 |  |  |  | 0.296
No |  | 355 (93.4%) | 175 (92.1%) |  |  | 168 (97.1%) | 107 (93.9%) |
Yes |  | 25 ( 6.6%) | 15 ( 7.9%) |  |  | 5 ( 2.9%) | 7 ( 6.1%) |
entry |  |  |  | 0.552 |  |  |  | 0.665
Femoral |  | 125 (32.9%) | 68 (35.8%) |  |  | 74 (42.8%) | 45 (39.5%) |
Radial |  | 255 (67.1%) | 122 (64.2%) |  |  | 99 (57.2%) | 69 (60.5%) |
Dx |  |  |  | 0.219 |  |  |  | 0.240
NSTEMI |  | 71 (18.7%) | 32 (16.8%) |  |  | 25 (14.5%) | 25 (21.9%) |
STEMI |  | 154 (40.5%) | 66 (34.7%) |  |  | 54 (31.2%) | 30 (26.3%) |
Unstable Angina |  | 155 (40.8%) | 92 (48.4%) |  |  | 94 (54.3%) | 59 (51.8%) |
EF |  | 56.5 ± 8.3 | 53.9 ± 11.0 | 0.007 |  | 56.0 ± 10.1 | 56.6 ± 10.0 | 0.655
height |  | 168.1 ± 5.8 | 167.5 ± 6.7 | 0.386 |  | 153.9 ± 6.5 | 153.6 ± 5.8 | 0.707
weight |  | 68.1 ± 10.4 | 69.8 ± 10.2 | 0.070 |  | 56.5 ± 8.7 | 58.4 ± 10.0 | 0.106
BMI |  | 24.0 ± 3.1 | 24.9 ± 3.5 | 0.005 |  | 23.8 ± 3.2 | 24.8 ± 4.0 | 0.046
obesity |  |  |  | 0.027 |  |  |  | 0.359
No |  | 261 (68.7%) | 112 (58.9%) |  |  | 121 (69.9%) | 73 (64.0%) |
Yes |  | 119 (31.3%) | 78 (41.1%) |  |  | 52 (30.1%) | 41 (36.0%) |
TC |  | 184.1 ± 46.7 | 181.8 ± 44.5 | 0.572 |  | 186.0 ± 43.1 | 193.3 ± 60.8 | 0.274
LDLC |  | 117.9 ± 41.8 | 112.1 ± 39.4 | 0.115 |  | 116.3 ± 35.2 | 119.8 ± 48.6 | 0.519
HDLC |  | 38.4 ± 11.4 | 36.8 ± 9.6 | 0.083 |  | 39.2 ± 10.9 | 38.8 ± 12.2 | 0.821
TG |  | 115.2 ± 72.2 | 153.4 ± 130.7 | < 0.001 |  | 114.2 ± 82.4 | 128.4 ± 65.5 | 0.112
HBP |  |  |  | < 0.001 |  |  |  | 0.356
No |  | 205 (53.9%) | 68 (35.8%) |  |  | 54 (31.2%) | 29 (25.4%) |
Yes |  | 175 (46.1%) | 122 (64.2%) |  |  | 119 (68.8%) | 85 (74.6%) |
smoking |  |  |  | 0.386 |  |  |  | 0.093
Ex-smoker |  | 101 (26.6%) | 54 (28.4%) |  |  | 34 (19.7%) | 15 (13.2%) |
Never |  | 77 (20.3%) | 46 (24.2%) |  |  | 118 (68.2%) | 91 (79.8%) |
Smoker |  | 202 (53.2%) | 90 (47.4%) |  |  | 21 (12.1%) | 8 ( 7.0%) |

You can use addSigColor() function to colorized significant rows of ztable.mytable

    res1=mytable(sex~.,data=acs)
    res1 %>% ztable %>%
       addSigColor %>%
       print

| Female | Male | p
--- | --- | --- | ---
| (N=287) | (N=570)
age | 68.7 ± 10.7 | 60.6 ± 11.2 | < 0.001
cardiogenicShock |  |  | 0.136
No | 275 (95.8%) | 530 (93.0%) |
Yes | 12 ( 4.2%) | 40 ( 7.0%) |
entry |  |  | 0.035
Femoral | 119 (41.5%) | 193 (33.9%) |
Radial | 168 (58.5%) | 377 (66.1%) |
Dx |  |  | 0.012
NSTEMI | 50 (17.4%) | 103 (18.1%) |
STEMI | 84 (29.3%) | 220 (38.6%) |
Unstable Angina | 153 (53.3%) | 247 (43.3%) |
EF | 56.3 ± 10.1 | 55.6 ± 9.4 | 0.387
height | 153.8 ± 6.2 | 167.9 ± 6.1 | < 0.001
weight | 57.2 ± 9.3 | 68.7 ± 10.3 | < 0.001
BMI | 24.2 ± 3.6 | 24.3 ± 3.2 | 0.611
obesity |  |  | 0.580
No | 194 (67.6%) | 373 (65.4%) |
Yes | 93 (32.4%) | 197 (34.6%) |
TC | 188.9 ± 51.1 | 183.3 ± 45.9 | 0.124
LDLC | 117.8 ± 41.2 | 116.0 ± 41.1 | 0.561
HDLC | 39.0 ± 11.5 | 37.8 ± 10.9 | 0.145
TG | 119.9 ± 76.2 | 127.9 ± 97.3 | 0.195
DM |  |  | 0.077
No | 173 (60.3%) | 380 (66.7%) |
Yes | 114 (39.7%) | 190 (33.3%) |
HBP |  |  | < 0.001
No | 83 (28.9%) | 273 (47.9%) |
Yes | 204 (71.1%) | 297 (52.1%) |
smoking |  |  | < 0.001
Ex-smoker | 49 (17.1%) | 155 (27.2%) |
Never | 209 (72.8%) | 123 (21.6%) |
Smoker | 29 (10.1%) | 292 (51.2%) |

    res2<-mytable(sex+DM~.,data=acs)
    res2 %>%
        ztable %>%
        addSigColor(level=0.1,bg="yellow",color="red") %>%
        print

Descriptive Statistics Stratified by ‘SEX’ and ‘DM’
|  | Male |  | Female
|  | No | Yes | p |  | No | Yes | p
--- | --- | --- | --- | --- | --- | --- | --- | ---
| (N=380) | (N=190) |  | (N=173) | (N=114)
age |  | 60.9 ± 11.5 | 60.1 ± 10.6 | 0.472 |  | 69.3 ± 11.4 | 67.8 ± 9.7 | 0.257
cardiogenicShock |  |  |  | 0.685 |  |  |  | 0.296
No |  | 355 (93.4%) | 175 (92.1%) |  |  | 168 (97.1%) | 107 (93.9%) |
Yes |  | 25 ( 6.6%) | 15 ( 7.9%) |  |  | 5 ( 2.9%) | 7 ( 6.1%) |
entry |  |  |  | 0.552 |  |  |  | 0.665
Femoral |  | 125 (32.9%) | 68 (35.8%) |  |  | 74 (42.8%) | 45 (39.5%) |
Radial |  | 255 (67.1%) | 122 (64.2%) |  |  | 99 (57.2%) | 69 (60.5%) |
Dx |  |  |  | 0.219 |  |  |  | 0.240
NSTEMI |  | 71 (18.7%) | 32 (16.8%) |  |  | 25 (14.5%) | 25 (21.9%) |
STEMI |  | 154 (40.5%) | 66 (34.7%) |  |  | 54 (31.2%) | 30 (26.3%) |
Unstable Angina |  | 155 (40.8%) | 92 (48.4%) |  |  | 94 (54.3%) | 59 (51.8%) |
EF |  | 56.5 ± 8.3 | 53.9 ± 11.0 | 0.007 |  | 56.0 ± 10.1 | 56.6 ± 10.0 | 0.655
height |  | 168.1 ± 5.8 | 167.5 ± 6.7 | 0.386 |  | 153.9 ± 6.5 | 153.6 ± 5.8 | 0.707
weight |  | 68.1 ± 10.4 | 69.8 ± 10.2 | 0.070 |  | 56.5 ± 8.7 | 58.4 ± 10.0 | 0.106
BMI |  | 24.0 ± 3.1 | 24.9 ± 3.5 | 0.005 |  | 23.8 ± 3.2 | 24.8 ± 4.0 | 0.046
obesity |  |  |  | 0.027 |  |  |  | 0.359
No |  | 261 (68.7%) | 112 (58.9%) |  |  | 121 (69.9%) | 73 (64.0%) |
Yes |  | 119 (31.3%) | 78 (41.1%) |  |  | 52 (30.1%) | 41 (36.0%) |
TC |  | 184.1 ± 46.7 | 181.8 ± 44.5 | 0.572 |  | 186.0 ± 43.1 | 193.3 ± 60.8 | 0.274
LDLC |  | 117.9 ± 41.8 | 112.1 ± 39.4 | 0.115 |  | 116.3 ± 35.2 | 119.8 ± 48.6 | 0.519
HDLC |  | 38.4 ± 11.4 | 36.8 ± 9.6 | 0.083 |  | 39.2 ± 10.9 | 38.8 ± 12.2 | 0.821
TG |  | 115.2 ± 72.2 | 153.4 ± 130.7 | < 0.001 |  | 114.2 ± 82.4 | 128.4 ± 65.5 | 0.112
HBP |  |  |  | < 0.001 |  |  |  | 0.356
No |  | 205 (53.9%) | 68 (35.8%) |  |  | 54 (31.2%) | 29 (25.4%) |
Yes |  | 175 (46.1%) | 122 (64.2%) |  |  | 119 (68.8%) | 85 (74.6%) |
smoking |  |  |  | 0.386 |  |  |  | 0.093
Ex-smoker |  | 101 (26.6%) | 54 (28.4%) |  |  | 34 (19.7%) | 15 (13.2%) |
Never |  | 77 (20.3%) | 46 (24.2%) |  |  | 118 (68.2%) | 91 (79.8%) |
Smoker |  | 202 (53.2%) | 90 (47.4%) |  |  | 21 (12.1%) | 8 ( 7.0%) |