| Version: | 1.3.1 | 
| Date: | 2021-05-22 | 
| Title: | Easy Table | 
| Author: | Andreas Schulz [aut, cre] | 
| Maintainer: | Andreas Schulz <ades-s@web.de> | 
| Depends: | R (≥ 4.0.0) | 
| Imports: | Hmisc | 
| Suggests: | knitr, rmarkdown | 
| VignetteBuilder: | knitr | 
| Description: | Creates simple to highly customized tables for a wide selection of descriptive statistics, with or without weighting the data. | 
| License: | GPL (≥ 3) | 
| NeedsCompilation: | no | 
| Packaged: | 2021-05-22 16:19:17 UTC; BlackMidiAd | 
| Repository: | CRAN | 
| Date/Publication: | 2021-05-22 16:50:02 UTC | 
Easy Table
Description
The package comes without any warranty.
Details
| Package: | etable | 
| Title: | Easy Table | 
| Type: | Package | 
| Version: | 1.3.0 | 
| Date: | 2021-05-23 | 
| Depends: | R (>= 3.0.0) | 
| Imports: | xtable, Hmisc | 
| License: | GPL version 3 or newer | 
| LazyLoad: | yes | 
Author(s)
Andreas Schulz
Maintainer: <ades-s@web.de>
Dichotomous and continuous variable combination cell function
Description
Calculates different statistics depending on the type of variable.
Usage
combi_cell(x, y, z, w, cell_ids, row_ids, col_ids, vnames, vars, n_min,
              digits=3, style=1)
Arguments
| x | The x variable for calculations, if not using y | 
| y | The y variable for calculations, if not using x | 
| z | NOT USED | 
| w | Weights for x or y variable. | 
| cell_ids | Index vector for selecting values in cell. | 
| row_ids | NOT USED | 
| col_ids | NOT USED | 
| vnames | NOT USED | 
| vars | NOT USED | 
| n_min | Minimum n in the cell for useful calculation. Cells with n<n_min deliver no output. | 
| digits | Integer indicating the number of significant digits. | 
| style | Type of representation. 
 | 
Author(s)
Andreas Schulz <ades-s@web.de>
Examples
sex     <- factor(rbinom(1000, 1, 0.4),  labels=c('Men', 'Women'))
height  <- rnorm(1000, mean=1.7, sd=0.1)
weight  <- rnorm(1000, mean=70, sd=5)
bmi     <- weight/height^2
event   <- factor(rbinom(1000, 1, 0.1), labels=c('no',  'yes'))
d<-data.frame(sex, height, weight, bmi, event)
tabular.ade(x_vars=names(d), cols=c('sex','ALL'), rnames=c('Gender'),
            data=d, FUN=combi_cell)
Correlation cell function
Description
Calculating Pearson product-moment correlation coefficient.
Usage
       corr_p_cell(x, y, z, w, cell_ids, row_ids, col_ids, vnames, vars, n_min,
       digits = 3)
Arguments
| x | The x variable | 
| y | The y variable | 
| z | NOT USED | 
| w | Weights for x and y variable. | 
| cell_ids | Index vector for selecting values in cell. | 
| row_ids | NOT USED | 
| col_ids | NOT USED | 
| vnames | NOT USED | 
| vars | NOT USED | 
| n_min | Minimum n in the cell for useful calculation. Cells with n<n_min deliver no output. | 
| digits | Integer indicating the number of decimal places. | 
Author(s)
Andreas Schulz <ades-s@web.de>
Examples
sex     <- factor(rbinom(1000, 1, 0.4),  labels=c('Men', 'Women'))
height  <- rnorm(1000, mean=1.70, sd=0.1)
weight  <- rnorm(1000, mean=70, sd=5)
bmi     <- weight/height^2
d<-data.frame(sex, bmi, height, weight)
tabular.ade(x_vars=c('bmi','height','weight'), xname=c('BMI','Height','Weight'),
            y_vars=c('bmi','height','weight'), yname=c('BMI','Height','Weight'),
            rows=c('sex','ALL'), rnames=c('Gender'), data=d, FUN=corr_p_cell)
Factor level frequencies cell function
Description
Calculates frequencies or proportions of a certain level of factor x.
Usage
      eventpct_cell(x, y, z, w, cell_ids, row_ids, col_ids, vnames, vars, n_min,
      digits=1, digits2=0, event=2, type=1)
Arguments
| x | The factor x for calculations | 
| y | NOT USED | 
| z | NOT USED | 
| w | Weights for x factor, only if calculating weighted frequencies. | 
| cell_ids | Index vector for selecting values in cell. | 
| row_ids | NOT USED | 
| col_ids | NOT USED | 
| vnames | NOT USED | 
| vars | NOT USED | 
| n_min | Minimum n in the cell for useful calculation. Cells with n<n_min deliver no output. | 
| digits | Integer indicating the number of decimal places (for percentages) | 
| digits2 | Integer indicating the number of decimal places (N, needed if N is not integer because of weighting) | 
| event | The Number of factor level to calculate frequencies. from 1 to nlevels(x) | 
| type | Type of representation, one of following. 
 | 
Author(s)
Andreas Schulz <ades-s@web.de>
Examples
sex     <- factor(rbinom(1000, 1, 0.4), labels=c('Men', 'Women'))
event   <- factor(rbinom(1000, 1, 0.1), labels=c('no',  'yes'))
decades <- rbinom(1000, 3, 0.5)
decades <- factor(decades, labels=c('[35,45)','[45,55)','[55,65)','[65,75)'))
d<-data.frame(sex, decades, event)
tabular.ade(x_vars=c('event'), xname=c('Event'),
   rows=c('sex','ALL'), rnames=c('Gender'),
   cols=c('decades', 'ALL'),   cnames=c('Age decades'),
   data=d, FUN=eventpct_cell)
Median IQR cell function.
Description
For calculate median and interquartile range. (weighting is possible)
Usage
          iqr_cell(x, y, z, w, cell_ids, row_ids, col_ids, vnames, vars, n_min,
          digits = 3, add_n=FALSE)
Arguments
| x | The x variable for calculations | 
| y | NOT USED | 
| z | NOT USED | 
| w | Weights for x variable. | 
| cell_ids | Index vector for selecting values in cell. | 
| row_ids | NOT USED | 
| col_ids | NOT USED | 
| vnames | NOT USED | 
| vars | NOT USED | 
| n_min | Minimum n in the cell for useful calculation. Cells with n<n_min deliver no output. | 
| digits | Integer indicating the number of significant digits. | 
| add_n | Logical asking whether to draw N for each cell. | 
Author(s)
Andreas Schulz <ades-s@web.de>
Examples
sex     <- factor(rbinom(1000, 1, 0.4),  labels=c('Men', 'Women'))
height  <- rnorm(1000, mean=1.66, sd=0.1)
height[which(sex=='Men')]<-height[which(sex=='Men')]+0.1
weight  <- rnorm(1000, mean=70, sd=5)
decades <- rbinom(1000, 3, 0.5)
decades <- factor(decades, labels=c('[35,45)','[45,55)','[55,65)','[65,75)'))
d<-data.frame(sex, decades, height, weight)
tabular.ade(x_vars=c('height', 'weight'), xname=c('Height [m]','Weight [kg]'),
   rows=c('sex','ALL'), rnames=c('Gender'),
   cols=c('decades'),   cnames=c('Age decades'),
   data=d, FUN=iqr_cell, add_n=TRUE)
Mean and SD cell function
Description
Calculates mean and SD or weighted mead and SD.
Usage
mean_sd_cell(x, y, z, w, cell_ids, row_ids, col_ids, vnames, vars, n_min,
             digits = 3, style=1, nsd=1)
Arguments
| x | The x variable for calculations | 
| y | NOT USED | 
| z | NOT USED | 
| w | Weights for x variable. | 
| cell_ids | Index vector for selecting values in cell. | 
| row_ids | NOT USED | 
| col_ids | NOT USED | 
| vnames | NOT USED | 
| vars | NOT USED | 
| n_min | Minimum n in the cell for useful calculation. Cells with n<n_min deliver no output. | 
| digits | Integer indicating the number of significant digits. | 
| style | Type of representation. 
 | 
| nsd | Multiplier for sd in stlyle 2. (for normal distribution) 
 | 
Author(s)
Andreas Schulz <ades-s@web.de>
Examples
sex     <- factor(rbinom(1000, 1, 0.4),  labels=c('Men', 'Women'))
height  <- rnorm(1000, mean=1.66, sd=0.1)
height[which(sex=='Men')]<-height[which(sex=='Men')]+0.1
weight  <- rnorm(1000, mean=70, sd=5)
decades <- rbinom(1000, 3, 0.5)
decades <- factor(decades, labels=c('[35,45)','[45,55)','[55,65)','[65,75)'))
d<-data.frame(sex, decades, height, weight)
tabular.ade(x_vars=c('height', 'weight'), xname=c('Height [m]','Weight [kg]'),
   rows=c('sex','ALL'), rnames=c('Gender'),
   cols=c('decades'),   cnames=c('Age decades'),
   data=d, FUN=mean_sd_cell, style=2, nsd=1.96)
Missing values cell function
Description
Counting the number of missing values in each cell.
Usage
miss_cell(x, y, z, w, cell_ids, row_ids, col_ids, vnames, vars, n_min,
          pct = FALSE, digits = 0, prefix='', suffix='')
Arguments
| x | The x variable | 
| y | NOT USED | 
| z | NOT USED | 
| w | NOT USED (The number of missing will not be weighted!). | 
| cell_ids | Index vector for selecting values in cell. | 
| row_ids | NOT USED | 
| col_ids | NOT USED | 
| vnames | NOT USED | 
| vars | NOT USED | 
| n_min | NOT USED | 
| pct | Logical asking whatever to draw absolute or relative frequency of missing values. | 
| digits | Integer indicating the number of decimal places. | 
| prefix | Free text added in each cell bevor results. | 
| suffix | Free text added in each cell after results. | 
Author(s)
Andreas Schulz <ades-s@web.de>
Examples
sex     <- factor(rbinom(1000, 1, 0.4),  labels=c('Men', 'Women'))
height  <- rnorm(1000, mean=1.66, sd=0.1)
height[which(sex=='Men')]<-height[which(sex=='Men')]+0.1
weight  <- rnorm(1000, mean=70, sd=5)
decades <- rbinom(1000, 3, 0.5)
decades <- factor(decades, labels=c('[35,45)','[45,55)','[55,65)','[65,75)'))
d<-data.frame(sex, decades, height, weight)
d$height[round(runif(250,1,1000))]<- NA
d$weight[round(runif(25 ,1,1000))]<- NA
tabular.ade(x_vars=c('height', 'weight'), xname=c('Height [m]','Weight [kg]'),
        cols=c('sex','decades','ALL'), cnames=c('Gender', 'Age decades'),
        data=d, FUN=miss_cell, prefix='Miss:')
Mode cell function
Description
Shows the most frequent value (mode)
Usage
   mode_cell(x, y, z, w, cell_ids, row_ids, col_ids, vnames, vars, n_min,
          digits=3)
Arguments
| x | The x variable | 
| y | NOT USED | 
| z | NOT USED | 
| w | Weights for x variable. Only if calculating weighted mode. | 
| cell_ids | Index vector for selecting values in cell. | 
| row_ids | Index vector for selecting values in row. | 
| col_ids | Index vector for selecting values in col. | 
| vnames | NOT USED | 
| vars | NOT USED | 
| n_min | NOT USED | 
| digits | Integer indicating the number of significant digits. | 
Author(s)
Andreas Schulz <ades-s@web.de>
Examples
sex     <- factor(rbinom(1000, 1, 0.4),  labels=c('Men', 'Women'))
note    <- as.factor(rbinom(1000, 4, 0.5)+1)
decades <- rbinom(1000, 3, 0.5)
decades <- factor(decades, labels=c('[35,45)','[45,55)','[55,65)','[65,75)'))
d<-data.frame(sex, decades, note)
tabular.ade(x_vars=c('note'), xname=c('Noten'),
       rows=c('sex','ALL','decades'), rnames=c('Gender', 'Age decades'),
       data=d, FUN=mode_cell)
Frequency Cell FUN
Description
For calculation of relative or absolute frequencies.
Usage
   n_cell(x, y, z, w, cell_ids, row_ids, col_ids, vnames, vars, n_min,
          digits=0, digits2=1, type="n")
Arguments
| x | The x variable (can be just 1:N if without missings values) | 
| y | NOT USED | 
| z | NOT USED | 
| w | Weights for x variable. Only if calculating weigted frequences. | 
| cell_ids | Index vector for selecting values in cell. | 
| row_ids | Index vector for selecting values in row. | 
| col_ids | Index vector for selecting values in col. | 
| vnames | NOT USED | 
| vars | NOT USED | 
| n_min | NOT USED | 
| digits | Integer indicating the number of decimal places (N) | 
| digits2 | Integer indicating the number of decimal places (percentages) | 
| type | Type of frequencies, one of following. 
 | 
Details
The function calculate frequencies for cell. If x has no missing values the frequencies are independent of x. Missing values in x will be removed from calculation.
Author(s)
Andreas schulz <ades-s@web.de>
Examples
sex     <- factor(rbinom(1000, 1, 0.4),  labels=c('Men', 'Women'))
decades <- rbinom(1000, 3, 0.5)
decades <- factor(decades, labels=c('[35,45)','[45,55)','[55,65)','[65,75)'))
d<-data.frame(sex, decades)
tabular.ade(x_var='sex',  rows=c('sex',     'ALL'), rnames=c('Gender'),
                          cols=c('decades', 'ALL'), cnames=c('Age decades'),
            data=d, FUN=n_cell, , type="all")
Quantile cell function
Description
Calculating simple or weighted quantiles
Usage
quantile_cell(x, y, z, w, cell_ids, row_ids, col_ids, vnames, vars, n_min,
              digits = 3, probs = 0.5, plabels=FALSE)
Arguments
| x | The x variable for calculations | 
| y | NOT USED | 
| z | NOT USED | 
| w | Weights for x variable. | 
| cell_ids | Index vector for selecting values in cell. | 
| row_ids | NOT USED | 
| col_ids | NOT USED | 
| vnames | NOT USED | 
| vars | NOT USED | 
| n_min | Minimum n in the cell for useful calculation. Cells with n<n_min deliver no output. | 
| digits | Integer indicating the number of significant digits. | 
| probs | A single or a vector of numeric probabilities for sample quantile with values in [0,1]. | 
| plabels | Logical asking whether to label the quantile in the cell or only draw the value. | 
Author(s)
Andreas Schulz <ades-s@web.de>
Examples
sex     <- factor(rbinom(1000, 1, 0.4),  labels=c('Men', 'Women'))
height  <- rnorm(1000, mean=1.66, sd=0.1)
height[which(sex=='Men')]<-height[which(sex=='Men')]+0.1
weight  <- rnorm(1000, mean=70, sd=5)
decades <- rbinom(1000, 3, 0.5)
decades <- factor(decades, labels=c('[35,45)','[45,55)','[55,65)','[65,75)'))
d<-data.frame(sex, decades, height, weight)
tabular.ade(x_vars=c('height', 'weight'), xname=c('Height [m]','Weight [kg]'),
   rows=c('sex',     'ALL'), rnames=c('Gender'),
   cols=c('decades', 'ALL'), cnames=c('Age decades'),
   data=d, FUN=quantile_cell, probs = 0.99)
Diverse statistics cell function
Description
Calculating values of several descriptive statistics.
Usage
       stat_cell(x, y, z, w, cell_ids, row_ids, col_ids, vnames, vars, n_min,
       digits = 3, digits2=1)
Arguments
| x | The x variable | 
| y | NOT USED | 
| z | NOT USED | 
| w | Weights for x variable. | 
| cell_ids | Index vector for selecting values in cell. | 
| row_ids | NOT USED | 
| col_ids | NOT USED | 
| vnames | NOT USED | 
| vars | A vector of character strings with names of variables in data.frame for x, y and z. Use names of x or y as keywords, to choose a certain statistic. | 
| n_min | Minimum n in the cell for useful calculation. Cells with n<n_min deliver no output. | 
| digits | Integer indicating the number of significant digits. | 
| digits2 | Integer indicating the number of decimal places for percentages. | 
Details
Keywords are:
- N: number in this cell 
- MIN: minimum 
- MAX: maximum 
- SUM: sum 
- MEAN: mean 
- SD: standard deviation 
- MSD: mean, standard deviation 
- MCI: mean, 95% CI 
- VAR: variance 
- MEDIAN: median 
- MD: mean deviation from the mean (*1.253) 
- MAD: median absolute deviation (*1.4826) 
- IQR: interquartile range 
- MQQ: median (Q1/Q3) 
- PROP: proportion 
- POP: proportion of level 2 (only binar) 
- PCI: proportion of level 2, 95% CI 
- RANGE: range 
- CV: coefficient of variation 
- MODE: mode 
- MISS: number of missing values 
- PNM: proportion of non missing values 
- COMB: POP for binar and MQQ for continues 
- SKEW: skewness 
- KURT: excess kurtosis 
- GEO: geometric mean 
- HARM: harmonic mean 
- TM1: truncated mean 1% 
- TM5: truncated mean 5% 
- TM10: truncated mean 10% 
- TM25: truncated mean 25% 
- WM1: winsorized mean 1% 
- WM5: winsorized mean 5% 
- WM10: winsorized mean 10% 
- WM25: winsorized mean 25% 
- M1SD: mean-SD, mean+SD 
- M2SD: mean-2SD, mean+2SD 
- M3SD: mean-3SD, mean+3SD 
- MM1SD: mean, mean-SD, mean+SD 
- MM2SD: mean, mean-2SD, mean+2SD 
- MM3SD: mean, mean-3SD, mean+3SD 
- NORM50: mean-0.675SD, mean+0.675SD 
- NORM90: mean-1.645SD, mean+1.645SD 
- NORM95: mean-1.96SD, mean+1.96SD 
- NORM99: mean-2.576SD, mean+2.576SD 
- P1: 1th quantile 
- P2.5: 2.5th quantile 
- P5: 5th quantile 
- P10: 10th quantile 
- P20: 20th quantile 
- P25: 25th quantile 
- P30: 30th quantile 
- P40: 40th quantile 
- P50: 50th quantile 
- P60: 60th quantile 
- P70: 70th quantile 
- P75: 75th quantile 
- P80: 80th quantile 
- P90: 90th quantile 
- P95: 95th quantile 
- P97.5: 97.5th quantile 
- P99: 99th quantile 
Author(s)
Andreas Schulz <ades-s@web.de>
Examples
sex     <- factor(rbinom(1000, 1, 0.4),  labels=c('Men', 'Women'))
height  <- rnorm(1000, mean=1.66, sd=0.1)
height[which(sex=='Men')]<-height[which(sex=='Men')]+0.1
weight  <- rnorm(1000, mean=70, sd=5)
decades <- rbinom(1000, 3, 0.5)
decades <- factor(decades, labels=c('[35,45)','[45,55)','[55,65)','[65,75)'))
d<-data.frame(sex, decades, height, weight)
tabular.ade(x_vars=c('height', 'weight'), xname=c('Height [m]','Weight [kg]'),
   y_vars=c('N', 'MEAN', 'SD', 'SKEW', 'KURT'),
   rows=c('sex', 'ALL', 'decades', 'ALL'), rnames=c('Gender', 'Age decades'),
   data=d, FUN=stat_cell)
Tabular representation of a wide selection of statistics
Description
Creates simple to highly customized tables for a wide selection of descriptive statistics, with or without weighting the data.
Usage
tabular.ade(x_vars, xname=NULL, y_vars=NULL, yname=NULL,
            z_vars=NULL, zname=NULL,
            rows=NULL, rnames=NULL, cols=NULL, cnames=NULL, w=NULL,
            data=NULL, FUN, allnames=FALSE, nonames=TRUE, alllabel='Total',
            inset='?', remove='', n_min=0, ...)
Arguments
| x_vars | This variable will be used to calculate the statistics for it. 
 | 
| xname | Labels for x. 
 | 
| y_vars | This variable can be used to calculate bivariable statistics. 
 | 
| yname | Labels for y. 
 | 
| z_vars | This variable can be used for additional calculations. 
 | 
| zname | Labels for z. 
 | 
| rows | These factors will be used to separate the rows of the table in subgroups. 
 | 
| rnames | Labels for rows. 
 | 
| cols | These factors will be used to separate the columns of the table in subgroups. 
 | 
| cnames | Labels for cols. 
 | 
| w | This numeric variable will be used to weight the table. 
 | 
| data | A data frame with all used variables. | 
| FUN | An abstract cell function to calculate statistics in every cell of the table. See details. | 
| allnames | Logical asking whether to fill every cell with labels or only the first one. | 
| nonames | Logical asking whether to use dimnames for variable labels or make all labeling in the table self. | 
| alllabel | Label for overall group without splitting in this factor. | 
| inset | Inset text in each cell, '?' will be replaced with the value of the cell. | 
| remove | Remove a character string from each cell. | 
| n_min | min N in each cell, it will be only passed in the cell function. But it is necessary to suppress calculation of statistics using only few values. | 
| ... | additional parameters passed to the FUN | 
Details
FUN can be a cell function from this package or a custom cell function.
The custom cell function must take the following parameters, but it is not necessary to use them.
- x, The whole x variable. 
- y, The whole y variable. 
- z, The whole z variable. 
- w, The whole w variable. 
- cell_ids, Index vector to select values that belong in this cell. 
- row_ids, Index vector to select values that belong in this row. 
- col_ids, Index vector to select values that belong in this col. 
- vnames, A vector of length 3, with labels of variables (x,y,z) 
- vars, A vector of length 3, with names of variables (x,y,z) 
- n_min , Min needed N for calculation. 
- ... , additional custom parameters. 
For an example with simple mean see below.
Value
A character Matrix.(Table)
Author(s)
Andreas Schulz <ades-s@web.de>
Examples
# 1) simple own FUN cell function.
s_mean<- function(x, y, z, w, cell_ids, row_ids, col_ids, vnames, vars, n_min, ds=3){
out<- ''
if(length(cell_ids)>= n_min){
out<-  format(mean(x[cell_ids], na.rm=TRUE), digits=ds)
}
return(out)
}
##########################################
# 2) simple 2 x 2 table of means
sex   <- factor(rbinom(5000, 1, 0.5), labels=c('Men', 'Women'))
age   <- round(runif(5000, 18, 89))
treat <- factor(rbinom(5000, 1, 0.3), labels=c('control', 'treated'))
d<-data.frame(sex, age, treat)
tabular.ade(x_vars='age', xname='Age [y]', rows='sex', rnames='Sex', cols='treat',
cnames='Treatment', data=d, nonames=FALSE, FUN=s_mean)
##########################################
# 3) Relative frequency table
d$dosis <- round(runif(5000, 0.5, 6.49))
tabular.ade(x_vars='age', xname='Age [y]', rows=c('sex', 'treat'),
rnames=c('Sex', 'Treatment'), cols='dosis', cnames='Dosis', data=d, FUN=n_cell,
type='pct')
##########################################
# 4) Weighted median table
d$w <- runif(5000, 0.1, 5)
d$bmi <- rnorm(5000, 30, 3)
tabular.ade(x_vars=c('age', 'bmi'), xname=c('Age', 'BMI'),
cols=c('sex', 'ALL', 'treat'),
cnames=c('Sex', 'Treatment'), w='w', data=d, FUN=quantile_cell)
##########################################
# 5) Correlation table between age and bmi
tabular.ade(x_vars='age', xname='Age', y_vars='bmi', yname='BMI',
rows=c('dosis'), rnames=c('Dosis'), cols=c('sex', 'treat'),
cnames=c('Sex', 'Treatment'), data=d, FUN=corr_p_cell)
##########################################
# 6) Multiple statistics
tabular.ade(x_vars=c('N', 'MEAN', 'SD', 'SKEW', 'KURT', 'RANGE'),
y_vars=c('age', 'bmi'), yname=c('Age', 'BMI'),
cols=c('sex', 'ALL', 'treat'), cnames=c('Sex', 'Treatment'),
w='w', data=d, FUN=stat_cell)