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.