R can produce tables either of aggregate data or summary statistics. The most useful initial tables are raw counts +/- percentages, either of a single variable, with respect to two variables, or by groupings.
First we generate some data. The following code simulates the features of 100 patients in a clinical trial, including their ages, the centre they attended (A to E), the treatment they received (intervention or control).
Input:
clinical_trial <-
data.frame(patient = 1:100,
age = rnorm(100, mean = 60, sd = 6),
treatment = gl(2, 50,
labels = c("Treatment", "Control")),
centre = sample(paste("Centre", LETTERS[1:5]),
100, replace = TRUE))
attach(clinical_trial)
clinical_trial[1:10, ]
Output:
patient age treatment centre
1 53.26911 Treatment Centre E
2 72.55279 Treatment Centre A
3 61.86786 Treatment Centre E
4 59.87694 Treatment Centre A
5 56.48190 Treatment Centre E
6 53.63273 Treatment Centre A
7 54.70294 Treatment Centre A
8 69.42797 Treatment Centre A
9 54.08574 Treatment Centre E
10 47.69731 Treatment Centre B
The simplest table we can create is a one way table of counts, e.g. based on whether patients received the intervention or the control treatment. The table()
function produces a count of the specified column.
Input:
table(treatment)
Output:
treatment
Treatment Control
50 50
To create a twoway table, simply list the variables in the preferred order. The 'dnn' option creates column and row variable labels for the table.
Input:
table(treatment, centre, dnn=c("TREATMENTS", "CENTRES"))
Output:
CENTRES
TREATMENTS Centre A Centre B Centre C Centre D Centre E
Treatment 11 6 7 10 16
Control 11 16 7 9 7
Sometimes, we may wish to create an entirely new dataframe from the table.
Input:
centres<-as.data.frame(table(treatment, centre),
responseName="counts")
centres
Output:
treatment centre counts
Treatment Centre A 11
Control Centre A 11
Treatment Centre B 6
Control Centre B 16
Treatment Centre C 7
Control Centre C 7
Treatment Centre D 10
Control Centre D 9
Treatment Centre E 16
Control Centre E 7
For more advanced options, see the table() documentation online.