## Manipulate Flat Contingency Tables

### Description

Read, write and coerce ‘flat’ (contingency) tables, aka ftables.

### Usage

read.ftable(file, sep = "", quote = "\"",
row.var.names, col.vars, skip = 0)

write.ftable(x, file = "", quote = TRUE, append = FALSE,
digits = getOption("digits"), sep = " ", ...)

## S3 method for class 'ftable'
format(x, quote = TRUE, digits = getOption("digits"),
method = c("non.compact", "row.compact", "col.compact", "compact"),
lsep = " | ",
justify = c("left", "right"),
...)

## S3 method for class 'ftable'
print(x, digits = getOption("digits"), ...)


### Arguments

 file either a character string naming a file or a connection which the data are to be read from or written to. "" indicates input from the console for reading and output to the console for writing. sep the field separator string. Values on each line of the file are separated by this string. quote a character string giving the set of quoting characters for read.ftable; to disable quoting altogether, use quote="". For write.table, a logical indicating whether strings in the data will be surrounded by double quotes. row.var.names a character vector with the names of the row variables, in case these cannot be determined automatically. col.vars a list giving the names and levels of the column variables, in case these cannot be determined automatically. skip the number of lines of the data file to skip before beginning to read data. x an object of class "ftable". append logical. If TRUE and file is the name of a file (and not a connection or "|cmd"), the output from write.ftable is appended to the file. If FALSE, the contents of file will be overwritten. digits an integer giving the number of significant digits to use for (the cell entries of) x. method string specifying how the "ftable" object is formatted (and printed if used as in write.ftable() or the print method). Can be abbreviated. Available methods are (see the examples): "non.compact"the default representation of an "ftable" object. "row.compact"a row-compact version without empty cells below the column labels. "col.compact"a column-compact version without empty cells to the right of the row labels. "compact"a row- and column-compact version. This may imply a row and a column label sharing the same cell. They are then separated by the string lsep. lsep only for method = "compact", the separation string for row and column labels. justify character vector of length (one or) two, specifying how string justification should happen in format(..), first for the labels, then the table entries. ... further arguments to be passed to or from methods; for write() and print(), notably arguments such as method, passed to format().

### Details

read.ftable reads in a flat-like contingency table from a file. If the file contains the written representation of a flat table (more precisely, a header with all information on names and levels of column variables, followed by a line with the names of the row variables), no further arguments are needed. Similarly, flat tables with only one column variable the name of which is the only entry in the first line are handled automatically. Other variants can be dealt with by skipping all header information using skip, and providing the names of the row variables and the names and levels of the column variable using row.var.names and col.vars, respectively. See the examples below.

Note that flat tables are characterized by their ‘ragged’ display of row (and maybe also column) labels. If the full grid of levels of the row variables is given, one should instead use read.table to read in the data, and create the contingency table from this using xtabs.

write.ftable writes a flat table to a file, which is useful for generating ‘pretty’ ASCII representations of contingency tables. Different versions are available via the method argument, which may be useful, for example, for constructing LaTeX tables.

### References

Agresti, A. (1990) Categorical data analysis. New York: Wiley.

ftable for more information on flat contingency tables.

### Examples

## Agresti (1990), page 157, Table 5.8.
## Not in ftable standard format, but o.k.
file <- tempfile()
cat("             Intercourse\n",
"Race  Gender     Yes  No\n",
"White Male        43 134\n",
"      Female      26 149\n",
"Black Male        29  23\n",
"      Female      22  36\n",
file = file)
file.show(file)
ft1

## Agresti (1990), page 297, Table 8.16.
## Almost o.k., but misses the name of the row variable.
file <- tempfile()
cat("                      \"Tonsil Size\"\n",
"            \"Not Enl.\" \"Enl.\" \"Greatly Enl.\"\n",
"Noncarriers       497     560           269\n",
"Carriers           19      29            24\n",
file = file)
file.show(file)
ft <- read.ftable(file, skip = 2,
row.var.names = "Status",
col.vars = list("Tonsil Size" =
c("Not Enl.", "Enl.", "Greatly Enl.")))
ft

ft22 <- ftable(Titanic, row.vars = 2:1, col.vars = 4:3)
write.ftable(ft22, quote = FALSE) # is the same as
print(ft22)#method="non.compact" is default
print(ft22, method="row.compact")
print(ft22, method="col.compact")
print(ft22, method="compact")

## using 'justify' and 'quote' :
format(ftable(wool + tension ~ breaks, warpbreaks),
justify = "none", quote = FALSE)



[Package stats version 4.2.0 Index]