diff --git a/README.md b/README.md
index 35c7318..f939120 100644
--- a/README.md
+++ b/README.md
@@ -75,31 +75,31 @@ When used on a data.frame, it returns a descriptive table:
``` r
iris %>%
- desctable
+ desctable()
```
- ## N Mean/% sd Med IQR
- ## 1 Sepal.Length 150 NA NA 5.80 1.3
- ## 2 Sepal.Width 150 3.057333 0.4358663 NA NA
- ## 3 Petal.Length 150 NA NA 4.35 3.5
- ## 4 Petal.Width 150 NA NA 1.30 1.5
- ## 5 Species 150 NA NA NA NA
- ## 6 Species: setosa 50 33.333333 NA NA NA
- ## 7 Species: versicolor 50 33.333333 NA NA NA
- ## 8 Species: virginica 50 33.333333 NA NA NA
+ ## N % Mean sd Med IQR
+ ## 1 Sepal.Length 150 NA NA NA 5.80 1.3
+ ## 2 Sepal.Width 150 NA 3.057333 0.4358663 3.00 0.5
+ ## 3 Petal.Length 150 NA NA NA 4.35 3.5
+ ## 4 Petal.Width 150 NA NA NA 1.30 1.5
+ ## 5 Species 150 NA NA NA NA NA
+ ## 6 Species: setosa 50 33.33333 NA NA NA NA
+ ## 7 Species: versicolor 50 33.33333 NA NA NA NA
+ ## 8 Species: virginica 50 33.33333 NA NA NA NA
``` r
desctable(mtcars)
```
- ## N Mean sd Med IQR
- ## 1 mpg 32 20.090625 6.0269481 NA NA
+ ## N Mean sd Med IQR
+ ## 1 mpg 32 20.090625 6.0269481 19.200 7.37500
## 2 cyl 32 NA NA 6.000 4.00000
## 3 disp 32 NA NA 196.300 205.17500
## 4 hp 32 NA NA 123.000 83.50000
- ## 5 drat 32 3.596563 0.5346787 NA NA
+ ## 5 drat 32 3.596563 0.5346787 3.695 0.84000
## 6 wt 32 NA NA 3.325 1.02875
- ## 7 qsec 32 17.848750 1.7869432 NA NA
+ ## 7 qsec 32 17.848750 1.7869432 17.710 2.00750
## 8 vs 32 NA NA 0.000 1.00000
## 9 am 32 NA NA 0.000 1.00000
## 10 gear 32 NA NA 4.000 1.00000
@@ -121,20 +121,20 @@ interactive html output with **DT** (`datatable`) are provided:
``` r
iris %>%
- desctable %>%
- pander
+ desctable() %>%
+ pander()
```
-| | N | Mean/% | sd | Med | IQR |
-| :----------- | :-- | :----- | :--- | :-- | :-- |
-| Sepal.Length | 150 | | | 5.8 | 1.3 |
-| Sepal.Width | 150 | 3.1 | 0.44 | | |
-| Petal.Length | 150 | | | 4.3 | 3.5 |
-| Petal.Width | 150 | | | 1.3 | 1.5 |
-| **Species** | 150 | | | | |
-| setosa | 50 | 33 | | | |
-| versicolor | 50 | 33 | | | |
-| virginica | 50 | 33 | | | |
+| Â | N | % | Mean | sd | Med | IQR |
+| :----------- | :-- | :- | :--- | :--- | :-- | :-- |
+| Sepal.Length | 150 | | | | 5.8 | 1.3 |
+| Sepal.Width | 150 | | 3.1 | 0.44 | 3 | 0.5 |
+| Petal.Length | 150 | | | | 4.3 | 3.5 |
+| Petal.Width | 150 | | | | 1.3 | 1.5 |
+| **Species** | 150 | | | | | |
+| setosa | 50 | 33 | | | | |
+| versicolor | 50 | 33 | | | | |
+| virginica | 50 | 33 | | | | |
You need to load these two packages first (and prior to
**desctable** for **DT**) if you want to use them.
@@ -194,22 +194,22 @@ You can also provide your own automatic function, which needs to
``` r
-# Strictly equivalent to iris %>% desctable %>% pander
+# Strictly equivalent to iris %>% desctable() %>% pander()
iris %>%
desctable(stats = stats_auto) %>%
- pander
+ pander()
```
-| | N | Mean/% | sd | Med | IQR |
-| :----------- | :-- | :----- | :--- | :-- | :-- |
-| Sepal.Length | 150 | | | 5.8 | 1.3 |
-| Sepal.Width | 150 | 3.1 | 0.44 | | |
-| Petal.Length | 150 | | | 4.3 | 3.5 |
-| Petal.Width | 150 | | | 1.3 | 1.5 |
-| **Species** | 150 | | | | |
-| setosa | 50 | 33 | | | |
-| versicolor | 50 | 33 | | | |
-| virginica | 50 | 33 | | | |
+| Â | N | % | Mean | sd | Med | IQR |
+| :----------- | :-- | :- | :--- | :--- | :-- | :-- |
+| Sepal.Length | 150 | | | | 5.8 | 1.3 |
+| Sepal.Width | 150 | | 3.1 | 0.44 | 3 | 0.5 |
+| Petal.Length | 150 | | | | 4.3 | 3.5 |
+| Petal.Width | 150 | | | | 1.3 | 1.5 |
+| **Species** | 150 | | | | | |
+| setosa | 50 | 33 | | | | |
+| versicolor | 50 | 33 | | | | |
+| virginica | 50 | 33 | | | | |
### Statistical functions
@@ -225,10 +225,10 @@ As mentioned above, they need to be used inside a named list, such as
``` r
mtcars %>%
desctable(stats = list("N" = length, "Mean" = mean, "SD" = sd)) %>%
- pander
+ pander()
```
-| | N | Mean | SD |
+| Â | N | Mean | SD |
| :--- | :- | :--- | :--- |
| mpg | 32 | 20 | 6 |
| cyl | 32 | 6.2 | 1.8 |
@@ -293,10 +293,10 @@ iris %>%
desctable(stats = list("N" = length,
"%/Mean" = is.factor ~ percent | (is.normal ~ mean),
"Median" = is.normal ~ NA | median)) %>%
- pander
+ pander()
```
-| | N | %/Mean | Median |
+| Â | N | %/Mean | Median |
| :----------- | :-- | :----- | :----- |
| Sepal.Length | 150 | | 5.8 |
| Sepal.Width | 150 | 3.1 | |
@@ -333,15 +333,14 @@ package:
## list(N = length, `%` = percent)
## else if (!fact & normal & nonnormal)
## list(N = length, Mean = is.normal ~ mean, sd = is.normal ~
- ## sd, Med = is.normal ~ NA | median, IQR = is.normal ~
- ## NA | IQR)
+ ## sd, Med = stats::median, IQR = is.factor ~ NA | IQR)
## else if (!fact & normal & !nonnormal)
## list(N = length, Mean = mean, sd = stats::sd)
## else if (!fact & !normal & nonnormal)
## list(N = length, Med = stats::median, IQR = IQR)
## else stats_default(data)
## }
- ##
+ ##
##
### Labels
@@ -374,24 +373,24 @@ mtlabels <- c(mpg = "Miles/(US) gallon",
mtcars %>%
dplyr::mutate(am = factor(am, labels = c("Automatic", "Manual"))) %>%
desctable(labels = mtlabels) %>%
- pander
+ pander()
```
-| | N | Mean/% | sd | Med | IQR |
-| :---------------------- | :- | :----- | :--- | :-- | :-- |
-| Miles/(US) gallon | 32 | 20 | 6 | | |
-| Number of cylinders | 32 | | | 6 | 4 |
-| Displacement (cu.in.) | 32 | | | 196 | 205 |
-| Gross horsepower | 32 | | | 123 | 84 |
-| Rear axle ratio | 32 | 3.6 | 0.53 | | |
-| Weight (1000 lbs) | 32 | | | 3.3 | 1 |
-| ¼ mile time | 32 | 18 | 1.8 | | |
-| V/S | 32 | | | 0 | 1 |
-| **Transmission** | 32 | | | | |
-| Automatic | 19 | 59 | | | |
-| Manual | 13 | 41 | | | |
-| Number of forward gears | 32 | | | 4 | 1 |
-| Number of carburetors | 32 | | | 2 | 2 |
+| Â | N | % | Mean | sd | Med | IQR |
+| :---------------------- | :- | :- | :--- | :--- | :-- | :--- |
+| Miles/(US) gallon | 32 | | 20 | 6 | 19 | 7.4 |
+| Number of cylinders | 32 | | | | 6 | 4 |
+| Displacement (cu.in.) | 32 | | | | 196 | 205 |
+| Gross horsepower | 32 | | | | 123 | 84 |
+| Rear axle ratio | 32 | | 3.6 | 0.53 | 3.7 | 0.84 |
+| Weight (1000 lbs) | 32 | | | | 3.3 | 1 |
+| ¼ mile time | 32 | | 18 | 1.8 | 18 | 2 |
+| V/S | 32 | | | | 0 | 1 |
+| **Transmission** | 32 | | | | | |
+| Automatic | 19 | 59 | | | | |
+| Manual | 13 | 41 | | | | |
+| Number of forward gears | 32 | | | | 4 | 1 |
+| Number of carburetors | 32 | | | | 2 | 2 |
@@ -409,24 +408,24 @@ It uses the well known `group_by` function from **dplyr**:
``` r
iris %>%
group_by(Species) %>%
- desctable -> iris_by_Species
+ desctable() -> iris_by_Species
iris_by_Species
```
- ## Species: setosa (n=50) / N Species: setosa (n=50) / Mean
+ ## Species: setosa (n=50) / N Species: setosa (n=50) / Mean
## 1 Sepal.Length 50 5.006
## 2 Sepal.Width 50 3.428
## 3 Petal.Length 50 NA
## 4 Petal.Width 50 NA
## Species: setosa (n=50) / sd Species: setosa (n=50) / Med
- ## 1 0.3524897 NA
- ## 2 0.3790644 NA
+ ## 1 0.3524897 5.0
+ ## 2 0.3790644 3.4
## 3 NA 1.5
## 4 NA 0.2
## Species: setosa (n=50) / IQR Species: versicolor (n=50) / N1
- ## 1 NA 50
- ## 2 NA 50
+ ## 1 0.400 50
+ ## 2 0.475 50
## 3 0.175 50
## 4 0.100 50
## Species: versicolor (n=50) / Mean1 Species: versicolor (n=50) / sd1
@@ -435,25 +434,25 @@ iris_by_Species
## 3 4.260 0.4699110
## 4 NA NA
## Species: versicolor (n=50) / Med1 Species: versicolor (n=50) / IQR1
- ## 1 NA NA
- ## 2 NA NA
- ## 3 NA NA
- ## 4 1.3 0.3
+ ## 1 5.90 0.700
+ ## 2 2.80 0.475
+ ## 3 4.35 0.600
+ ## 4 1.30 0.300
## Species: virginica (n=50) / N2 Species: virginica (n=50) / Mean2
## 1 50 6.588
## 2 50 2.974
## 3 50 5.552
## 4 50 NA
## Species: virginica (n=50) / sd2 Species: virginica (n=50) / Med2
- ## 1 0.6358796 NA
- ## 2 0.3224966 NA
- ## 3 0.5518947 NA
- ## 4 NA 2
+ ## 1 0.6358796 6.50
+ ## 2 0.3224966 3.00
+ ## 3 0.5518947 5.55
+ ## 4 NA 2.00
## Species: virginica (n=50) / IQR2 tests / p
- ## 1 NA 1.505059e-28
- ## 2 NA 4.492017e-17
- ## 3 NA 4.803974e-29
- ## 4 0.5 3.261796e-29
+ ## 1 0.675 1.505059e-28
+ ## 2 0.375 4.492017e-17
+ ## 3 0.775 4.803974e-29
+ ## 4 0.500 3.261796e-29
## tests / test
## 1 . %>% oneway.test(var.equal = F)
## 2 . %>% oneway.test(var.equal = T)
@@ -480,23 +479,23 @@ str(iris_by_Species)
## $ Variables :'data.frame': 4 obs. of 1 variable:
## ..$ Variables: chr [1:4] "Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width"
## $ Species: setosa (n=50) :'data.frame': 4 obs. of 5 variables:
- ## ..$ N : num [1:4] 50 50 50 50
+ ## ..$ N : int [1:4] 50 50 50 50
## ..$ Mean: num [1:4] 5.01 3.43 NA NA
## ..$ sd : num [1:4] 0.352 0.379 NA NA
- ## ..$ Med : num [1:4] NA NA 1.5 0.2
- ## ..$ IQR : num [1:4] NA NA 0.175 0.1
+ ## ..$ Med : num [1:4] 5 3.4 1.5 0.2
+ ## ..$ IQR : num [1:4] 0.4 0.475 0.175 0.1
## $ Species: versicolor (n=50):'data.frame': 4 obs. of 5 variables:
- ## ..$ N : num [1:4] 50 50 50 50
+ ## ..$ N : int [1:4] 50 50 50 50
## ..$ Mean: num [1:4] 5.94 2.77 4.26 NA
## ..$ sd : num [1:4] 0.516 0.314 0.47 NA
- ## ..$ Med : num [1:4] NA NA NA 1.3
- ## ..$ IQR : num [1:4] NA NA NA 0.3
+ ## ..$ Med : num [1:4] 5.9 2.8 4.35 1.3
+ ## ..$ IQR : num [1:4] 0.7 0.475 0.6 0.3
## $ Species: virginica (n=50) :'data.frame': 4 obs. of 5 variables:
- ## ..$ N : num [1:4] 50 50 50 50
+ ## ..$ N : int [1:4] 50 50 50 50
## ..$ Mean: num [1:4] 6.59 2.97 5.55 NA
## ..$ sd : num [1:4] 0.636 0.322 0.552 NA
- ## ..$ Med : num [1:4] NA NA NA 2
- ## ..$ IQR : num [1:4] NA NA NA 0.5
+ ## ..$ Med : num [1:4] 6.5 3 5.55 2
+ ## ..$ IQR : num [1:4] 0.675 0.375 0.775 0.5
## $ tests :'data.frame': 4 obs. of 2 variables:
## ..$ p : num [1:4] 1.51e-28 4.49e-17 4.80e-29 3.26e-29
## ..$ test: chr [1:4] ". %>% oneway.test(var.equal = F)" ". %>% oneway.test(var.equal = T)" "kruskal.test" "kruskal.test"
@@ -508,11 +507,11 @@ You can specify groups based on any variable, not only factors:
# With pander output
mtcars %>%
group_by(cyl) %>%
- desctable %>%
- pander
+ desctable() %>%
+ pander()
```
-| | cyl: 4 (n=11)
N |
Med |
IQR | cyl: 6 (n=7)
N1 |
Med1 |
IQR1 | cyl: 8 (n=14)
N2 |
Med2 |
IQR2 | tests
p |
test |
+| Â | cyl: 4 (n=11)
N |
Med |
IQR | cyl: 6 (n=7)
N1 |
Med1 |
IQR1 | cyl: 8 (n=14)
N2 |
Med2 |
IQR2 | tests
p |
test |
| :--- | :------------------ | :------- | :------- | :------------------ | :-------- | :-------- | :------------------- | :-------- | :-------- | :---------- | :----------- |
| mpg | 11 | 26 | 7.6 | 7 | 20 | 2.4 | 14 | 15 | 1.8 | 2.6e-06 | kruskal.test |
| disp | 11 | 108 | 42 | 7 | 168 | 36 | 14 | 350 | 88 | 1.6e-06 | kruskal.test |
@@ -530,20 +529,20 @@ Also with conditions:
``` r
iris %>%
group_by(Petal.Length > 5) %>%
- desctable %>%
- pander
+ desctable() %>%
+ pander()
```
-| | Petal.Length \> 5: FALSE (n=108)
N |
Mean/% |
sd |
Med |
IQR | Petal.Length \> 5: TRUE (n=42)
N1 |
Mean/%1 |
sd1 |
Med1 |
IQR1 | tests
p |
test |
-| :----------- | :------------------------------------- | :---------- | :------ | :------- | :------- | :------------------------------------ | :----------- | :------- | :-------- | :-------- | :---------- | :---------- |
-| Sepal.Length | 108 | | | 5.5 | 1 | 42 | | | 6.7 | 0.85 | 1.6e-15 | wilcox.test |
-| Sepal.Width | 108 | 3.1 | 0.48 | | | 42 | | | 3 | 0.4 | 0.69 | wilcox.test |
-| Petal.Length | 108 | | | 3.5 | 3 | 42 | | | 5.6 | 0.67 | 2.1e-21 | wilcox.test |
-| Petal.Width | 108 | | | 1 | 1.2 | 42 | 2.1 | 0.28 | | | 1.6e-19 | wilcox.test |
-| **Species** | 108 | | | | | 42 | | | | | 2.5e-26 | fisher.test |
-| setosa | 50 | 46 | | | | 0 | 0 | | | | | |
-| versicolor | 49 | 45 | | | | 1 | 2.4 | | | | | |
-| virginica | 9 | 8.3 | | | | 41 | 98 | | | | | |
+| Â | Petal.Length \> 5: FALSE (n=108)
N |
% |
Mean |
sd |
Med |
IQR | Petal.Length \> 5: TRUE (n=42)
N1 |
%1 |
Mean1 |
sd1 |
Med1 |
IQR1 | tests
p |
test |
+| :----------- | :------------------------------------- | :----- | :-------- | :------ | :------- | :------- | :------------------------------------ | :------ | :--------- | :------- | :-------- | :-------- | :---------- | :---------- |
+| Sepal.Length | 108 | | | | 5.5 | 1 | 42 | | | | 6.7 | 0.85 | 1.6e-15 | wilcox.test |
+| Sepal.Width | 108 | | 3.1 | 0.48 | 3 | 0.6 | 42 | | | | 3 | 0.4 | 0.69 | wilcox.test |
+| Petal.Length | 108 | | | | 3.5 | 3 | 42 | | | | 5.6 | 0.67 | 2.1e-21 | wilcox.test |
+| Petal.Width | 108 | | | | 1 | 1.2 | 42 | | 2.1 | 0.28 | 2.1 | 0.47 | 1.6e-19 | wilcox.test |
+| **Species** | 108 | | | | | | 42 | | | | | | 2.5e-26 | fisher.test |
+| setosa | 50 | 46 | | | | | 0 | 0 | | | | | | |
+| versicolor | 49 | 45 | | | | | 1 | 2.4 | | | | | | |
+| virginica | 9 | 8.3 | | | | | 41 | 98 | | | | | | |
@@ -553,11 +552,11 @@ And even on multiple nested groups:
mtcars %>%
dplyr::mutate(am = factor(am, labels = c("Automatic", "Manual"))) %>%
group_by(vs, am, cyl) %>%
- desctable %>%
- pander
+ desctable() %>%
+ pander()
```
-| | vs: 0 (n=18)
am: Automatic (n=12)
cyl: 8 (n=12)
N |
Med |
IQR |
tests
p |
test |
am: Manual (n=6)
cyl: 4 (n=1)
N3 |
Med3 |
IQR3 |
cyl: 6 (n=3)
N1 |
Med1 |
IQR1 |
cyl: 8 (n=2)
N2 |
Med2 |
IQR2 |
tests
p1 |
test1 | vs: 1 (n=14)
am: Automatic (n=7)
cyl: 4 (n=3)
N4 |
Med4 |
IQR4 |
cyl: 6 (n=4)
N11 |
Med11 |
IQR11 |
tests
p2 |
test2 |
am: Manual (n=7)
cyl: 4 (n=7)
N21 |
Med21 |
IQR21 |
tests
p11 |
test11 |
+| Â | vs: 0 (n=18)
am: Automatic (n=12)
cyl: 8 (n=12)
N |
Med |
IQR |
tests
p |
test |
am: Manual (n=6)
cyl: 4 (n=1)
N3 |
Med3 |
IQR3 |
cyl: 6 (n=3)
N1 |
Med1 |
IQR1 |
cyl: 8 (n=2)
N2 |
Med2 |
IQR2 |
tests
p1 |
test1 | vs: 1 (n=14)
am: Automatic (n=7)
cyl: 4 (n=3)
N4 |
Med4 |
IQR4 |
cyl: 6 (n=4)
N11 |
Med11 |
IQR11 |
tests
p2 |
test2 |
am: Manual (n=7)
cyl: 4 (n=7)
N21 |
Med21 |
IQR21 |
tests
p11 |
test11 |
| :--- | :------------------------------------------------------------ | :----------------- | :----------------- | :-------------------- | :------------------ | :-------------------------------------------- | :------------------ | :------------------ | :---------------------------- | :------------------ | :------------------ | :---------------------------- | :------------------ | :------------------ | :--------------------- | :------------------- | :----------------------------------------------------------- | :------------------ | :------------------ | :----------------------------- | :------------------- | :------------------- | :--------------------- | :------------------- | :--------------------------------------------- | :------------------- | :------------------- | :---------------------- | :-------------------- |
| mpg | 12 | 15 | 2.6 | | no.test | 1 | 26 | 0 | 3 | 21 | 0.65 | 2 | 15 | 0.4 | 0.11 | kruskal.test | 3 | 23 | 1.5 | 4 | 19 | 1.7 | 0.057 | wilcox.test | 7 | 30 | 6.3 | | no.test |
| disp | 12 | 355 | 113 | | no.test | 1 | 120 | 0 | 3 | 160 | 7.5 | 2 | 326 | 25 | 0.11 | kruskal.test | 3 | 141 | 13 | 4 | 196 | 66 | 0.05 | wilcox.test | 7 | 79 | 24 | | no.test |
@@ -622,22 +621,21 @@ You can also provide your own automatic function, which needs to
- return a single-term formula containing a statistical test function.
This function will be used on every variable and every grouping factor
-to determine the appropriate
-test.
+to determine the appropriate test.
``` r
# Strictly equivalent to iris %>% group_by(Species) %>% desctable %>% pander
iris %>%
group_by(Species) %>%
desctable(tests = tests_auto) %>%
- pander
+ pander()
```
-| | Species: setosa (n=50)
N |
Mean |
sd |
Med |
IQR | Species: versicolor (n=50)
N1 |
Mean1 |
sd1 |
Med1 |
IQR1 | Species: virginica (n=50)
N2 |
Mean2 |
sd2 |
Med2 |
IQR2 | tests
p |
test |
+| Â | Species: setosa (n=50)
N |
Mean |
sd |
Med |
IQR | Species: versicolor (n=50)
N1 |
Mean1 |
sd1 |
Med1 |
IQR1 | Species: virginica (n=50)
N2 |
Mean2 |
sd2 |
Med2 |
IQR2 | tests
p |
test |
| :----------- | :--------------------------- | :-------- | :------ | :------- | :------- | :-------------------------------- | :--------- | :------- | :-------- | :-------- | :------------------------------- | :--------- | :------- | :-------- | :-------- | :---------- | :-------------------------------- |
-| Sepal.Length | 50 | 5 | 0.35 | | | 50 | 5.9 | 0.52 | | | 50 | 6.6 | 0.64 | | | 1.5e-28 | . %\>% oneway.test(var.equal = F) |
-| Sepal.Width | 50 | 3.4 | 0.38 | | | 50 | 2.8 | 0.31 | | | 50 | 3 | 0.32 | | | 4.5e-17 | . %\>% oneway.test(var.equal = T) |
-| Petal.Length | 50 | | | 1.5 | 0.18 | 50 | 4.3 | 0.47 | | | 50 | 5.6 | 0.55 | | | 4.8e-29 | kruskal.test |
+| Sepal.Length | 50 | 5 | 0.35 | 5 | 0.4 | 50 | 5.9 | 0.52 | 5.9 | 0.7 | 50 | 6.6 | 0.64 | 6.5 | 0.67 | 1.5e-28 | . %\>% oneway.test(var.equal = F) |
+| Sepal.Width | 50 | 3.4 | 0.38 | 3.4 | 0.48 | 50 | 2.8 | 0.31 | 2.8 | 0.48 | 50 | 3 | 0.32 | 3 | 0.38 | 4.5e-17 | . %\>% oneway.test(var.equal = T) |
+| Petal.Length | 50 | | | 1.5 | 0.18 | 50 | 4.3 | 0.47 | 4.3 | 0.6 | 50 | 5.6 | 0.55 | 5.5 | 0.78 | 4.8e-29 | kruskal.test |
| Petal.Width | 50 | | | 0.2 | 0.1 | 50 | | | 1.3 | 0.3 | 50 | | | 2 | 0.5 | 3.3e-29 | kruskal.test |
@@ -664,19 +662,19 @@ iris %>%
group_by(Petal.Length > 5) %>%
desctable(tests = list(.auto = tests_auto,
Species = ~chisq.test)) %>%
- pander
+ pander()
```
-| | Petal.Length \> 5: FALSE (n=108)
N |
Mean/% |
sd |
Med |
IQR | Petal.Length \> 5: TRUE (n=42)
N1 |
Mean/%1 |
sd1 |
Med1 |
IQR1 | tests
p |
test |
-| :----------- | :------------------------------------- | :---------- | :------ | :------- | :------- | :------------------------------------ | :----------- | :------- | :-------- | :-------- | :---------- | :---------- |
-| Sepal.Length | 108 | | | 5.5 | 1 | 42 | | | 6.7 | 0.85 | 1.6e-15 | wilcox.test |
-| Sepal.Width | 108 | 3.1 | 0.48 | | | 42 | | | 3 | 0.4 | 0.69 | wilcox.test |
-| Petal.Length | 108 | | | 3.5 | 3 | 42 | | | 5.6 | 0.67 | 2.1e-21 | wilcox.test |
-| Petal.Width | 108 | | | 1 | 1.2 | 42 | 2.1 | 0.28 | | | 1.6e-19 | wilcox.test |
-| **Species** | 108 | | | | | 42 | | | | | 2.7e-24 | chisq.test |
-| setosa | 50 | 46 | | | | 0 | 0 | | | | | |
-| versicolor | 49 | 45 | | | | 1 | 2.4 | | | | | |
-| virginica | 9 | 8.3 | | | | 41 | 98 | | | | | |
+| Â | Petal.Length \> 5: FALSE (n=108)
N |
% |
Mean |
sd |
Med |
IQR | Petal.Length \> 5: TRUE (n=42)
N1 |
%1 |
Mean1 |
sd1 |
Med1 |
IQR1 | tests
p |
test |
+| :----------- | :------------------------------------- | :----- | :-------- | :------ | :------- | :------- | :------------------------------------ | :------ | :--------- | :------- | :-------- | :-------- | :---------- | :---------- |
+| Sepal.Length | 108 | | | | 5.5 | 1 | 42 | | | | 6.7 | 0.85 | 1.6e-15 | wilcox.test |
+| Sepal.Width | 108 | | 3.1 | 0.48 | 3 | 0.6 | 42 | | | | 3 | 0.4 | 0.69 | wilcox.test |
+| Petal.Length | 108 | | | | 3.5 | 3 | 42 | | | | 5.6 | 0.67 | 2.1e-21 | wilcox.test |
+| Petal.Width | 108 | | | | 1 | 1.2 | 42 | | 2.1 | 0.28 | 2.1 | 0.47 | 1.6e-19 | wilcox.test |
+| **Species** | 108 | | | | | | 42 | | | | | | 2.7e-24 | chisq.test |
+| setosa | 50 | 46 | | | | | 0 | 0 | | | | | | |
+| versicolor | 49 | 45 | | | | | 1 | 2.4 | | | | | | |
+| virginica | 9 | 8.3 | | | | | 41 | 98 | | | | | | |
@@ -686,10 +684,10 @@ mtcars %>%
group_by(am) %>%
desctable(tests = list(.default = ~wilcox.test,
mpg = ~t.test)) %>%
- pander
+ pander()
```
-| | am: Automatic (n=19)
N |
Med |
IQR | am: Manual (n=13)
N1 |
Med1 |
IQR1 | tests
p |
test |
+| Â | am: Automatic (n=19)
N |
Med |
IQR | am: Manual (n=13)
N1 |
Med1 |
IQR1 | tests
p |
test |
| :--- | :------------------------- | :------- | :------- | :----------------------- | :-------- | :-------- | :---------- | :---------- |
| mpg | 19 | 17 | 4.2 | 13 | 23 | 9.4 | 0.0014 | t.test |
| cyl | 19 | 8 | 2 | 13 | 4 | 2 | 0.0039 | wilcox.test |
@@ -736,10 +734,10 @@ mtcars %>%
"Sum of squares" = function(x) sum(x^2),
"Q1" = . %>% quantile(prob = .25),
"Q3" = purrr::partial(quantile, probs = .75))) %>%
- pander
+ pander()
```
-| | N | Sum of squares | Q1 | Q3 |
+| Â | N | Sum of squares | Q1 | Q3 |
| :--- | :- | :------------- | :-- | :-- |
| mpg | 32 | 14042 | 15 | 23 |
| cyl | 32 | 1324 | 4 | 8 |
@@ -765,21 +763,20 @@ iris %>%
Sepal.Width = ~function(f) oneway.test(f, var.equal = F),
Petal.Length = ~. %>% oneway.test(var.equal = T),
Sepal.Length = ~purrr::partial(oneway.test, var.equal = T))) %>%
- pander
+ pander()
```
-| | Species: setosa (n=50)
N |
Mean |
sd |
Med |
IQR | Species: versicolor (n=50)
N1 |
Mean1 |
sd1 |
Med1 |
IQR1 | Species: virginica (n=50)
N2 |
Mean2 |
sd2 |
Med2 |
IQR2 | tests
p |
test |
+| Â | Species: setosa (n=50)
N |
Mean |
sd |
Med |
IQR | Species: versicolor (n=50)
N1 |
Mean1 |
sd1 |
Med1 |
IQR1 | Species: virginica (n=50)
N2 |
Mean2 |
sd2 |
Med2 |
IQR2 | tests
p |
test |
| :----------- | :--------------------------- | :-------- | :------ | :------- | :------- | :-------------------------------- | :--------- | :------- | :-------- | :-------- | :------------------------------- | :--------- | :------- | :-------- | :-------- | :---------- | :----------------------------------------- |
-| Sepal.Length | 50 | 5 | 0.35 | | | 50 | 5.9 | 0.52 | | | 50 | 6.6 | 0.64 | | | 1.7e-31 | purrr::partial(oneway.test, var.equal = T) |
-| Sepal.Width | 50 | 3.4 | 0.38 | | | 50 | 2.8 | 0.31 | | | 50 | 3 | 0.32 | | | 1.4e-14 | function(f) oneway.test(f, var.equal = F) |
-| Petal.Length | 50 | | | 1.5 | 0.18 | 50 | 4.3 | 0.47 | | | 50 | 5.6 | 0.55 | | | 2.9e-91 | . %\>% oneway.test(var.equal = T) |
+| Sepal.Length | 50 | 5 | 0.35 | 5 | 0.4 | 50 | 5.9 | 0.52 | 5.9 | 0.7 | 50 | 6.6 | 0.64 | 6.5 | 0.67 | 1.7e-31 | purrr::partial(oneway.test, var.equal = T) |
+| Sepal.Width | 50 | 3.4 | 0.38 | 3.4 | 0.48 | 50 | 2.8 | 0.31 | 2.8 | 0.48 | 50 | 3 | 0.32 | 3 | 0.38 | 1.4e-14 | function(f) oneway.test(f, var.equal = F) |
+| Petal.Length | 50 | | | 1.5 | 0.18 | 50 | 4.3 | 0.47 | 4.3 | 0.6 | 50 | 5.6 | 0.55 | 5.5 | 0.78 | 2.9e-91 | . %\>% oneway.test(var.equal = T) |
| Petal.Width | 50 | | | 0.2 | 0.1 | 50 | | | 1.3 | 0.3 | 50 | | | 2 | 0.5 | 3.3e-29 | kruskal.test |
This allows you to modulate the behavior of `desctable` in every detail,
-such as using paired tests, or non *htest*
-tests.
+such as using paired tests, or non *htest* tests.
``` r
# This is a contrived example, which would be better solved with a dedicated function
@@ -791,10 +788,10 @@ bladder %>%
group_by(rx) %>%
desctable(tests = list(.default = ~wilcox.test,
surv = ~. %>% survdiff %>% .$chisq %>% pchisq(1, lower.tail = F) %>% list(p.value = .))) %>%
- pander
+ pander()
```
-| | rx: 1 (n=188)
N |
Med |
IQR | rx: 2 (n=152)
N1 |
Med1 |
IQR1 | tests
p |
test |
+| Â | rx: 1 (n=188)
N |
Med |
IQR | rx: 2 (n=152)
N1 |
Med1 |
IQR1 | tests
p |
test |
| :----- | :------------------ | :------- | :------- | :------------------- | :-------- | :-------- | :---------- | :--------------------------------------------------------------------------------- |
| id | 188 | 24 | 24 | 152 | 66 | 19 | 1.3e-56 | wilcox.test |
| number | 188 | 1 | 2 | 152 | 1 | 2 | 0.62 | wilcox.test |
@@ -802,4 +799,4 @@ bladder %>%
| stop | 188 | 23 | 20 | 152 | 25 | 28 | 0.17 | wilcox.test |
| event | 188 | 0 | 1 | 152 | 0 | 1 | 0.02 | wilcox.test |
| enum | 188 | 2.5 | 1.5 | 152 | 2.5 | 1.5 | 1 | wilcox.test |
-| surv | 376 | | | 304 | | | 0.023 | . %\>% survdiff %\>% .$chisq %\>% pchisq(1, lower.tail = F) %\>% list(p.value = .) |
+| surv | 188 | | | 152 | | | 0.023 | . %\>% survdiff %\>% .$chisq %\>% pchisq(1, lower.tail = F) %\>% list(p.value = .) |
diff --git a/man/desctable.Rd b/man/desctable.Rd
index 329e0e3..07b11a3 100644
--- a/man/desctable.Rd
+++ b/man/desctable.Rd
@@ -69,10 +69,10 @@ The output is a desctable object, which is a list of named dataframes that can b
\examples{
iris \%>\%
- desctable
+ desctable()
# Does the same as stats_auto here
-iris \%>\%
+iris \%>\%
desctable(stats = list("N" = length,
"\%/Mean" = is.factor ~ percent | (is.normal ~ mean),
"sd" = is.normal ~ sd,
@@ -92,7 +92,7 @@ iris \%>\%
# With nested grouping, on arbitrary variables
mtcars \%>\%
group_by(vs, cyl) \%>\%
- desctable
+ desctable()
# With grouping on a condition, and choice of tests
iris \%>\%