wants <- c("DescTools")
has   <- wants %in% rownames(installed.packages())
if(any(!has)) install.packages(wants[!has])set.seed(123)
(myLetters <- sample(LETTERS[1:5], 12, replace=TRUE)) [1] "B" "D" "C" "E" "E" "A" "C" "E" "C" "C" "E" "C"(tab <- table(myLetters))myLetters
A B C D E 
1 1 5 1 4 names(tab)[1] "A" "B" "C" "D" "E"tab["B"]B 
1 barplot(tab, main="Counts")
(relFreq <- prop.table(tab))myLetters
         A          B          C          D          E 
0.08333333 0.08333333 0.41666667 0.08333333 0.33333333 cumsum(relFreq)         A          B          C          D          E 
0.08333333 0.16666667 0.58333333 0.66666667 1.00000000 letFac <- factor(myLetters, levels=c(LETTERS[1:5], "Q"))
letFac [1] B D C E E A C E C C E C
Levels: A B C D E Qtable(letFac)letFac
A B C D E Q 
1 1 5 1 4 0 (vec <- rep(rep(c("f", "m"), 3), c(1, 3, 2, 4, 1, 2))) [1] "f" "m" "m" "m" "f" "f" "m" "m" "m" "m" "f" "m" "m"(res <- rle(vec))Run Length Encoding
  lengths: int [1:6] 1 3 2 4 1 2
  values : chr [1:6] "f" "m" "f" "m" "f" "m"length(res$lengths)[1] 6inverse.rle(res) [1] "f" "m" "m" "m" "f" "f" "m" "m" "m" "m" "f" "m" "m"table()N    <- 10
(sex <- factor(sample(c("f", "m"), N, replace=TRUE))) [1] m m f m f f f m m m
Levels: f m(work <- factor(sample(c("home", "office"), N, replace=TRUE))) [1] office office office office office office home   home   office office
Levels: home office(cTab <- table(sex, work))   work
sex home office
  f    1      3
  m    1      5summary(cTab)Number of cases in table: 10 
Number of factors: 2 
Test for independence of all factors:
    Chisq = 0.10417, df = 1, p-value = 0.7469
    Chi-squared approximation may be incorrectbarplot(cTab, beside=TRUE, legend.text=rownames(cTab), ylab="absolute frequency")
xtabs()counts   <- sample(0:5, N, replace=TRUE)
(persons <- data.frame(sex, work, counts))   sex   work counts
1    m office      4
2    m office      4
3    f office      0
4    m office      2
5    f office      4
6    f office      1
7    f   home      1
8    m   home      1
9    m office      0
10   m office      2xtabs(~ sex + work, data=persons)   work
sex home office
  f    1      3
  m    1      5xtabs(counts ~ sex + work, data=persons)   work
sex home office
  f    1      5
  m    1     12apply(cTab, MARGIN=1, FUN=sum)f m 
4 6 colMeans(cTab)  home office 
     1      4 addmargins(cTab, c(1, 2), FUN=mean)Margins computed over dimensions
in the following order:
1: sex
2: work      work
sex    home office mean
  f     1.0    3.0  2.0
  m     1.0    5.0  3.0
  mean  1.0    4.0  2.5(relFreq <- prop.table(cTab))   work
sex home office
  f  0.1    0.3
  m  0.1    0.5prop.table(cTab, margin=1)   work
sex      home    office
  f 0.2500000 0.7500000
  m 0.1666667 0.8333333prop.table(cTab, margin=2)   work
sex  home office
  f 0.500  0.375
  m 0.500  0.625(group <- factor(sample(c("A", "B"), 10, replace=TRUE))) [1] A A A A A A A B A A
Levels: A Bftable(work, sex, group, row.vars="work", col.vars=c("sex", "group"))       sex   f   m  
       group A B A B
work                
home         1 0 0 1
office       3 0 5 0Individual-level data frame
library(DescTools)
Untable(cTab)   sex   work
1    f   home
2    m   home
3    f office
4    f office
5    f office
6    m office
7    m office
8    m office
9    m office
10   m officeGroup-level data frame
as.data.frame(cTab, stringsAsFactors=TRUE)  sex   work Freq
1   f   home    1
2   m   home    1
3   f office    3
4   m office    5(vec <- round(rnorm(10), 2)) [1]  0.84  0.15 -1.14  1.25  0.43 -0.30  0.90  0.88  0.82  0.69Fn <- ecdf(vec)
Fn(vec) [1] 0.7 0.3 0.1 1.0 0.4 0.2 0.9 0.8 0.6 0.5100 * Fn(0.1)[1] 20Fn(sort(vec)) [1] 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0knots(Fn) [1] -1.14 -0.30  0.15  0.43  0.69  0.82  0.84  0.88  0.90  1.25plot(Fn, main="cumulative frequencies")
try(detach(package:DescTools))R markdown - markdown - R code - all posts